shell如何跨服务器执行数据库查询
1、使用ssh-keygen生成密钥实现快速登陆
[python]
view
plain
copy
要跨服务器自动执行脚本,得需要实现免密码自动登陆,然后才能在多个服务器之间跳转,因此我们首先需要生成登陆密钥。
生存登陆密钥需要三个步骤,在本地机器创建密钥,复制公钥要远程主机,将公钥追加到远程主机的authorized_keys
下面是一个操作示例:
oracle@linux1:~>
mkdir
~/ssh
#首先在本地创建ssh目录并赋予权限
oracle@linux1:~>
chmod
700
~/ssh
oracle@linux1:~>
ssh-keygen
-t
rsa
#使用ssh-keygen生成密钥对,也可以使用dsa方式
Generating
public/private
rsa
key
pair
Enter
file
in
which
to
save
the
key
(/users/oracle/ssh/id_rsa):
Enter
passphrase
(empty
for
no
passphrase):
Enter
same
passphrase
again:
Your
identification
has
been
saved
in
/users/oracle/ssh/id_rsa
Your
public
key
has
been
saved
in
/users/oracle/ssh/id_rsapub
The
key
fingerprint
is:
01:c8:48:01:f2:3d:a7:b4:cd:4a:9c:10:2d:ba:ef:4e
oracle@linux1
第一步:确认你的服务器是运行的。在企业管理器中看到服务器处如果有个绿色的小三角形,表示运行成功;如果是红色方块,则未成功,如果无法用“启动”连接成功,你需要对着服务器名称点鼠标右键,选择“新建SQL SERVER注册”,然后在弹出的向导对话框中选择“下一步”,然后在出现的“可用的服务器”中选择一个已有的服务器,点“添加”,然后点“下一步”,选择使用“Windows身份验证登录”,然后一路默认点下去,最后完成,就可以启动你的服务器了。 第二步:启动成功后在企业管理器里面的服务器上右键,选属性,在“安全性”中选择验证方式为“SQL SERVER和WINDOWS”,确定。 第三步:打开查询分析器后如果还没有自动连接成功,在连接登录框上选中“如果SQL SERVER已停止,则启动它”,然后选择一个可用服务器(在上面的下拉框右下角的省略号处点击,等一会儿就行)。然后你可以选择用系统验证登录还是用SQL SERVER验证登录,后者需要你有自己的帐号和密码(可以在企业管理器的“安全性”——>“登录”中新建帐号。如果只是为了练习SQL语句,那么推荐使用系统验证,这样方便些
是你的用户权限所致。如果你用SA登录,查询本服务器里的数据库是不用加DBO的。 另 如果你做跨服务器查询时就要用到DBO。 如 select from sf11raybendbotable1 两个特殊数据库用户: dbo,数据库的拥有者,在安装sqlserver时,被设置到model数据库中,不能被删除,所以dbo在每个数据库中都存在。dbo是数据库的最高权力者,对应于创建该数据库的登陆用户,即所有的数据库的dbo都对应于sa帐户; guest,这个用户可以使任何已经登陆到sqlserver服务器的用户都可以访问数据库,即使它还没有成为本数据库的用户。所有的系统数据库除model以外都有guest用户。所有新建的数据库都没有这个用户,如果有必要添加guest用户,请用sp_grantdbaccess来明确建立这个用户。
跨服务器数据查询,服务器要处理rollback,log之类的操作,还是存储过程,会很慢。
可以这样解决1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要。
2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)。
3、升级硬件。
4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段。
5、提高网速。
确定网速没问题的话,用的又是存储过程,服务器要处理rollback,log之类的操作会变慢,但是不至于慢这么多,你检查一下防火墙和杀毒软件,把他们关了看看会不会变快。能想到的就这么多了。刚刚给你查了下,禁用DNS解析,连接速度会快很多。不妨试一下,如果还慢的话,建议用缓存吧,比如hibernate框架
1、链接服务器,此种方式较为安全。验证是数据库级别的验证。
2、使用域环境+足够权限的SQL用户权限,就可以访问。
3、使用证书验证(非域环境),配置较以上两种方式复杂。
0条评论