sqlserver 中怎么使用sp_addlinkedserver实现多库查询
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可以方便地建立多库查询的连接。但是,连接造成的性能降低和安全问题需要注意。建议在生产环境中慎重使用。
