欢迎访问宙启技术站
智能推送

sqlserver 中怎么使用sp_addlinkedserver实现多库查询

发布时间:2023-05-18 22:18:53

SQL Server中的sp_addlinkedserver可以用于建立与其他服务器的连接。通过该连接,我们可以在当前数据库中直接使用其他服务器的表进行查询操作,实现多库查询。

使用sp_addlinkedserver建立连接步骤如下:

1. 打开SQL Server Management Studio,连接到需要建立连接的数据库服务器。

2. 执行以下语句创建一个连接:

EXEC sp_addlinkedserver @server = '服务器名称', @srvproduct = '服务器类型', @provider = 'SQLNCLI', @datasrc = '数据库服务器IP或名称'

其中,@server表示连接的名称,@srvproduct表示连接的服务器类型,@provider表示连接提供程序,@datasrc表示连接的数据源(即要连接的数据库服务器)。

3. 如果要连接的数据库服务器需要进行身份验证,可以使用以下语句添加登录凭据:

EXEC sp_addlinkedsrvlogin @rmtsrvname = '服务器名称', @useself = 'FALSE', @locallogin = NULL, @rmtuser = '用户名', @rmtpassword = '密码'

其中,@rmtsrvname表示连接的服务器名称,@useself表示是否使用当前登录凭据进行身份验证,@locallogin表示本地登录名,@rmtuser表示远程登录名,@rmtpassword表示远程登录密码。

4. 完成连接后,可以使用以下语句查询其他服务器上的表:

SELECT * FROM [服务器名称].[数据库名称].[模式].[表名]

其中,[服务器名称]表示连接名称,[数据库名称]表示要查询的数据库名称,[模式]表示要查询的表所属的模式,[表名]表示要查询的表名。

一些注意事项:

1. 如果在查询时出现以下错误:

Msg 7415, Level 16, State 1, Line 1

Ad hoc access to OLE DB provider 'SQLNCLI' has been denied. You must access this provider through a linked server.

可以通过执行以下语句解决:

EXEC sp_configure 'show advanced options', 1;

RECONFIGURE;

EXEC sp_configure 'ad hoc distributed queries', 1;

RECONFIGURE;

2. 如果要查询的表名是关键字,需要用方括号括起来,如:

SELECT * FROM [服务器名称].[数据库名称].[dbo].[[select]]

3. 如果要在存储过程中使用连接,需要在执行存储过程的账户下执行以下语句:

EXEC sp_addlinkedsrvlogin @rmtsrvname = '服务器名称', @useself = 'TRUE'

总之,使用sp_addlinkedserver可以方便地建立多库查询的连接。但是,连接造成的性能降低和安全问题需要注意。建议在生产环境中慎重使用。