根据 Microsoft的建议,我一直在使用带有旧提供程序 (SQLNCLI) 的链接服务器,没有任何问题,我打算切换到新的提供程序 (MSOLEDBSQL)。安装驱动程序后,我可以使用以下 T-SQL 添加链接服务器
EXEC sp_addlinkedserver
@server=N'SQL02\DEV1',
@srvproduct=N'',
@provider=N'MSOLEDBSQL',
@datasrc=N'SQL02,1933';
不幸的是,当我尝试查询新的链接服务器时出现以下错误:
我尝试过的查询:
--- example 1
select * from OPENQUERY ([SQL02\DEV1], 'select name from sys.databases');
--- example 2
select name from [SQL02\DEV1].master.sys.databases;
--- example 3 (without linked server dependency)
SELECT c.* FROM OPENROWSET(
'MSOLEDBSQL'
, 'Server=SQL02,1933;Database=master;Integrated Security=True;'
, 'SELECT name FROM sys.databases;'
) c;
从所有示例中得到相同的错误:
不支持在 SQL Server 中使用 OLE DB 提供程序“MSOLEDBSQL”的进程外。
这是否真的意味着 SQL-2016 不支持使用新的提供程序 MSOLEDBSQL,尤其是在链接服务器中,或者除了重新安装驱动程序和重新启动 SQL Server 之外,我还有什么遗漏的。