技术开发 频道

使用SQL Server进行分布式查询

  【IT168技术文档】

  分布式查询可以使用SQL Server 企业管理器进行建立,注意其中的rpc及rpc out两项,也可以使用sql语句来完成定义,主要涉及到三个存储过程。

  sp_addlinkedserver,sp_serveroption和sp_addlinkedsrvlogin,以下是三个存储过程的语法:

  sp_addlinkedserver

  创建一个链接的服务器,使其允许对分布式的、针对 OLE DB 数据源的异类查询进行访问。在使用 sp_addlinkedserver 创建链接的服务器之后,此服务器就可以执行分布式查询。如果链接服务器定义为 Microsoft® SQL Server™,则可执行远程存储过程。

  语法:

sp_addlinkedserver [ @server = ] 'server' [ , [ @srvproduct = ] 'product_name' ] [ , [ @provider = ] 'provider_name' ] [ , [ @datasrc = ] 'data_source' ] [ , [ @location = ] 'location' ] [ , [ @provstr = ] 'provider_string' ] [ , [ @catalog = ] 'catalog' ]

  例如:

sp_addlinkedserver 'ServerName','','SQLOLEDB','dbconn', null,'driver={sql server};server=192.168.1.181;uid=sa,pwd=;'

   此处ServerName为自定义名称,dbconn为定义的odbc数据源

  一般使用的参数如下:@server “LINKED SERVER”,@srvproduct “Product name”,@provider “Provider”,@datasrc “Data source”

  设置服务器选项

  使用 sp_serveroption 过程,所要使用的参数如下:@server “Linked server”,@optname “RPC”或“RPC OUT”,@optvalue True 或 False

  添加Login

  使用 sp_addlinkedsrvlogin 过程,所要使用的参数如下:@rmtsrvname “Linked server”,@useself True 或 False,@locallogin 本地LOGIN,@rmtuser 远程用户 ,@rmtpassword 远程用户口令

  全部完整的示例如下:

EXEC sp_addlinkedserver 'test','','SQLOLEDB','test',null, 'driver={sql server};server=ipaddress;uid=sa,pwd=;' exec sp_serveroption N'test', N'rpc out', N'true' exec sp_serveroption N'test', N'rpc', N'true' exec sp_addlinkedsrvlogin 'test','False',null,'sa',''

  访问可以使用如下语句:

select * from test.pubs.dbo.tb_maintab

  以上在Windows 2000,SQL Server 2000测试通过。

0
相关文章