将 SQL Server 2016 链接到 SQL Server 2000 实例



我已经设置了一个从SQL Server 2016到SQL Server 2000实例的链接,详细信息如下:

  • 我使用了SQLNCLI10连接

这是我使用的相关代码:

EXEC master.dbo.sp_addlinkedserver @server = N'SQL2000', @srvproduct=N'', @provider=N'SQLNCLI10', @provstr=N'DRIVER={SQL Server};SERVER=SQL2000;'
/* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'SQL2000',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
  • 两台服务器都设置为混合模式
  • 我在两台服务器上都有 SA 访问权限
  • 我不想使用本地 sql 登录名,我使用的是域登录名
  • 我得到的错误是:

    用户"(空("登录失败。原因:未与受信任的 SQL Server 连接关联。
    链接服务器"pebbles"的 OLE DB 提供程序"SQLNCLI10"返回消息"连接字符串属性无效"。

  • 我已经设置了从另一台SQL Server 2016计算机到同一SQL Server 2000的完全相同的链接,这是完全成功的

  • SQL Server 2016 比无法连接和 CAN 之间的唯一区别是 CAN 是 SP2,CAN是 SP1
  • SQL Server 2016 计算机都运行 NT6.3 64 位
  • SQL Server 2000 计算机位于 NT5.2 32 位上
  • 所有服务器都位于同一域中

有没有人知道为什么我不能成功地从一个SQL Server 2016链接到SQL Server 2000,但我可以成功地从另一个SQL Server 2016实例链接到完全相同的SQL Server 2000?

提前谢谢。

我发现这个解决方案Openquery,因为SQL Server 2000不受支持。

创造

EXEC sp_MSset_oledb_prop N'SQLNCLI10', N'AllowInProcess', 1
GO
EXEC sp_addlinkedserver @server = N'SQL2000', @srvproduct=N'', @provider=N'SQLNCLI10', @datasrc=N'MySql2000Server'
GO
EXEC sp_serveroption @server=N'SQL2000', @optname=N'collation compatible', @optvalue=N'false'
GO
EXEC sp_serveroption @server=N'SQL2000', @optname=N'data access', @optvalue=N'true'
GO
EXEC sp_serveroption @server=N'SQL2000', @optname=N'dist', @optvalue=N'false'
GO
EXEC sp_serveroption @server=N'SQL2000', @optname=N'pub', @optvalue=N'false'
GO
EXEC sp_serveroption @server=N'SQL2000', @optname=N'rpc', @optvalue=N'true'
GO
EXEC sp_serveroption @server=N'SQL2000', @optname=N'rpc out', @optvalue=N'true'
GO
EXEC sp_serveroption @server=N'SQL2000', @optname=N'sub', @optvalue=N'false'
GO
EXEC sp_serveroption @server=N'SQL2000', @optname=N'connect timeout', @optvalue=N'0'
GO
EXEC sp_serveroption @server=N'SQL2000', @optname=N'collation name', @optvalue=null
GO
EXEC sp_serveroption @server=N'SQL2000', @optname=N'lazy schema validation', @optvalue=N'false'
GO
EXEC sp_serveroption @server=N'SQL2000', @optname=N'query timeout', @optvalue=N'0'
GO
EXEC sp_serveroption @server=N'SQL2000', @optname=N'use remote collation', @optvalue=N'true'
GO
EXEC sp_serveroption @server=N'SQL2000', @optname=N'remote proc transaction promotion', @optvalue=N'true'
GO
EXEC sp_addlinkedsrvlogin @rmtsrvname = N'SQL2000', @locallogin = NULL , @useself = N'False', @rmtuser = N'dw', @rmtpassword = N'P@ssword'
GO

select * from openquery (sql2000, 'select @@servername a' )

链接: https://blogs.msdn.microsoft.com/dbrowne/2015/05/15/how-to-create-a-linked-server-to-sql-2000-from-sql-2012-or-later/

最新更新