您的位置:永利集团登录网址 > 永利集团登录网址 > 使用Sql server进行分布式查询

使用Sql server进行分布式查询

2019-11-23 07:54

MSSQLSERVER跨服务器链接服务器创建方法如下复制代码 代码如下:--声明变量 Declare @svrname varchar, @dbname varchar, @sapassword varchar --请在执行前,根据实际情况修改下列变量 select @svrname = '目标服务器名', @dbname = '目标数据库', @sapassword = 目标数据库密码 if exists ( select srvname from master.dbo.sysservers where srvname ='链接服务器名') exec sp_dropserver @server = '链接服务器名',@droplogins ='droplogins' --增加链接服务器 exec sp_addlinkedserver @server = '链接服务器名',@srvproduct='',@provider = 'SQLOLEDB', @datasrc =@svrname, @catalog =@dbname --增加链接服务器远程登录 exec sp_addlinkedsrvlogin @rmtsrvname = '链接服务器名',@useself ='False',@locallogin = 'sa',@rmtuser ='sa',@rmtpassword =@sapassword --配置参数 exec sp_serveroption @server ='链接服务器名',@optname = 'use remote collation',@optvalue ='false'exec sp_serveroption @server ='链接服务器名',@optname = 'collation compatible',@optvalue ='true'go

--查看当前链接情况:

图片 1可以使用sql-server企业管理器进行建立,注意其中的rpc及rpc out两项,也可以使用sql语句来完成定义,主要涉及到三个存储过程
图片 2
图片 3sp_addlinkedserver,sp_serveroption和sp_addlinkedsrvlogin,以下是三个存储过程的语法:
图片 4
图片 5sp_addlinkedserver
图片 6
图片 7创建一个链接的服务器,使其允许对分布式的、针对 OLE DB 数据源的异类查询进行访问。在使用 sp_addlinkedserver 创建链接的服务器之后,此服务器就可以执行分布式查询。如果链接服务器定义为 Microsoft® SQL Server™,则可执行远程存储过程。
图片 8
图片 9语法
图片 10
图片 11sp_addlinkedserver [ @server = ] 'server'
图片 12    [ , [ @srvproduct = ] 'product_name' ]
图片 13    [ , [ @provider = ] 'provider_name' ]
图片 14    [ , [ @datasrc = ] 'data_source' ]
图片 15    [ , [ @location = ] 'location' ]
图片 16    [ , [ @provstr = ] 'provider_string' ]
图片 17    [ , [ @catalog = ] 'catalog' ]
图片 18例如:
图片 19
图片 20 sp_addlinkedserver 'ServerName','','SQLOLEDB','dbconn',null,'driver={sql server};server=192.168.1.181;uid=sa,pwd=;'
图片 21
图片 22此处ServerName为自定义名称,dbconn为定义的odbc数据源
图片 23
图片 24一般使用的参数如下:
图片 25@server “LINKED SERVER”
图片 26@srvproduct “Product name”
图片 27@provider “Provider”
图片 28@datasrc “Data source”
图片 29
图片 30二、设置服务器选项
图片 31
图片 32使用 sp_serveroption 过程,所要使用的参数如下:
图片 33
图片 34@server “Linked server” 
图片 35@optname “RPC”或“RPC OUT”
图片 36@optvalue True 或 False
图片 37
图片 38三、添加Login
图片 39
图片 40使用 sp_addlinkedsrvlogin 过程,所要使用的参数如下:
图片 41
图片 42@rmtsrvname “Linked server”
图片 43@useself True 或 False
图片 44@locallogin 本地LOGIN
图片 45@rmtuser 远程用户 
图片 46@rmtpassword 远程用户口令
图片 47
图片 48全部完整的示例如下:
图片 49
图片 50EXEC sp_addlinkedserver 'test','','SQLOLEDB','test',null,'driver={sql server};server=ipaddress;uid=sa,pwd=;'
图片 51exec sp_serveroption N'test', N'rpc out', N'true' 
图片 52exec sp_serveroption N'test', N'rpc', N'true'
图片 53exec sp_addlinkedsrvlogin 'test','False',null,'sa',''
图片 54
图片 55访问可以使用如下语句:select * from test.pubs.dbo.tb_maintab
图片 56
图片 57以上在windows2000,sql-server2000测试通过
图片 58

select * from sys.servers;

--使用 sp_helpserver 来显示可用的服务器

Exec sp_helpserver

--删除已经存在的某个链接

Exec sp_droplinkedsrvlogin 服务器别名,Null Exec sp_dropserver 服务器别名

--使用sp_addlinkedserver来增加链接

EXEC sp_addlinkedserver @server='192.168.2.66',--被访问的服务器别名(习惯上直接使用目标服务器IP,或取个别名如:JOY) @srvproduct='', @provider='SQLOLEDB', @datasrc='192.168.2.66' --要访问的服务器

--使用sp_addlinkedsrvlogin 来增加用户登录链接

EXEC sp_addlinkedsrvlogin '192.168.2.66', --被访问的服务器别名(如果上面sp_addlinkedserver中使用别名JOY,则这里也是JOY) 'false', NULL, 'sa', --帐号 'test123' --密码

使用举例(访问目标服务器上的数据库Music,查看其中表test的内容):

如果建立链接时的别名是目标服务器IP,即192.168.2.66

则:

select * from [192.168.2.66].[Music].dbo.test

如果建立链接时的别名是JOY,

则:

select * from [JOY].[Music].dbo.test

 

可能会遇到的问题: exec sp_dropserver 'JOY'执行失败,

报错信息:仍有对服务器 'JOY' 的远程登录或链接登录

解决方法:

exec sp_droplinkedsrvlogin 'JOY',null

exec sp_dropserver 'JOY'

 

转自新浪

JoyS的博客

博客

本文由永利集团登录网址发布于永利集团登录网址,转载请注明出处:使用Sql server进行分布式查询

关键词: