在 SQL Server 2016 上,如何保证在链接服务器中使用 Microsoft ODBC Driver 13 for SQL Server?我不介意那里有另一个层,例如 MSDASQL 提供程序,但我确实希望 SQL Server 的 ODBC 驱动程序 13 最终成为与删除实例的连接。
通过在 Windows 2016 Technical Preview 4 上对 SQL Server 2016 RC2 进行测试,都在空白 VM 上全新安装,我可以使用 odbcad32 查看“ODBC Driver 13 for SQL Server”,版本为 2015.130.1300.275,文件名为 MSODBCSQL13.DLL。
版本和文件名在 64 位 odbcad32 屏幕以及来自 c:\windows\syswow64 的 32 位 odbcad32 屏幕中是相同的,所以我不认为这是一个 32 位与 64 位的问题(特别是因为驱动程序是由 SQL Server 2016 RC2 安装的)。
例如,在 SQL 2014 上,要使用 Native Client 11,我会使用
EXEC master.dbo.sp_addlinkedserver @server = N'LinkName', @srvproduct=N'sql_server', @provider=N'SQLNCLI11', @datasrc=N'YourTargetServer'
在 SQL 2016 RC2 上,当我尝试
EXEC master.dbo.sp_addlinkedserver @server = N'LinkName', @srvproduct=N'sql_server', @provider=N'MSODBCSQL13', @datasrc=N'YourTargetServer'
链接服务器创建得很好,但是当我尝试使用它时,我得到:
Msg 7403, Level 16, State 1, Line 7
The OLE DB provider "MSODBCSQL13" has not been registered.
我没有任何运气尝试 SQL Server 的 ODBC Driver 13 Microsoft ODBC Driver 13 for SQL Server 的提供程序名称
甚至尝试组合 MSDASQL 提供程序名称,来自
将 Always Encrypted 与 Windows ODBC 驱动程序 和 sp_addlinkedserver (Transact-SQL)一起使用
甚至查看注册表也没有显示我认识的提供商名称。
请注意,实际上,当我为 SQL Server 选择 ODBC Driver 13 时,使用 odbcad32 创建系统 DSN 确实可以成功测试,所以我知道它可以工作。
理想情况下,我只需要一个示例 sp_addlinkedserver 命令,在其中指定新的 ODBC 驱动程序。