我有一个 SQL Server 实例,Instance1
它有一个链接的 SQL Server,。Instance2
链接服务器在技术上是可以工作的,但我确信它通过命名管道Instance1
连接到Instance2
。通过使用 TCP/IP 和命名管道测试示例查询,我可以非常清楚地看到这一点。查询运行时间在以下两个方面有所不同:<1TCP/IP 第二>45命名管道的秒数。
我可以强制链接的 SQL ServerInstance1
在连接到时使用 TCP/IPInstance2
吗?我找不到与此相关的任何信息,如果无法做到这一点,我还有其他选择吗?
我尝试通过指定端口来创建链接服务器,但它似乎还是使用命名管道,即我将其创建为Instance2,1433
。有没有办法告诉master
数据库对链接服务器使用 TCP/IP?
任何帮助都将不胜感激。我希望答案不是“在 SQL 配置中关闭命名管道Instance2
”,尽管我意识到如果我无法让这个工作,我可能必须这样做。
编辑:我毫无疑问地证实了是命名管道导致了这个问题,而且我以前也见过命名管道有同样的问题(这是有据可查的行为命名管道)。我只是还没有看到在使用链接服务器时如何解决这个问题。
答案1
我成功尝试了连接字符串强制协议的方法:
Data Source=protocol:servername, portnumber;
例子:
EXEC master.dbo.sp_addlinkedserver @server = N'DB_OBRA', @srvproduct=N'sql_server', @provider=N'SQLNCLI11', @datasrc=N'tcp:10.0.34.33'