无法使用本机客户端11连接到SQL命名实例(SQLNCLI11)

时间:2015-07-24 10:58:04

标签: sql-server database-replication

我正在尝试使用publisher = SQL 2008 R2和命名实例SERVER \ UNIVERSE以及subscriber = SQL 2012创建SQL复制。

复制在其他SQL主机上运行正常。 在SQL 2012上,我无法连接到分销商。我缩小到OLE连接。并使用最新的sql native client

找到了奇怪的结果
$conn = New-Object System.Data.OleDb.OleDbConnection
$conn.ConnectionString = Provider=SQLNCLI11;Server=SERVER\UNIVERSE;Trusted_Connection=yes;
$conn.Open()

返回以下错误

Exception calling "Open" with "0" argument(s): "Login timeout expired
A network-related or instance-specific error has occurred while establishing
a connection to SQL Server.

如果我尝试在没有命名实例的情况下进行连接,则会成功

$conn.ServerVersion
10.50.2500

但奇怪的是,如果我在其他订阅者(带有SQLNCLI10的SQL 2008R2)上执行完全相同的命令,则命名连接按预期工作...

$conn.ConnectionString = "Provider=SQLNCLI10;Server=SERVER\UNIVERSE;Trusted_Connection=yes;"

这是一个错误吗?我无法轻易将命名实例移动到默认实例...

修改

测试udp

1434 port open

命名实例的端口(默认SQL端口1433) enter image description here

运行sql server浏览器 enter image description here

2 个答案:

答案 0 :(得分:1)

要使用实例名称连接到命名实例,SQL Server首先必须查询SQL Server Browser服务以确定命名实例的端口号。确保SQL Server Browser服务正在运行,并且允许UDP端口1434通过防火墙(以及命名的实例端口)。

答案 1 :(得分:0)

最终我在端口1434上的udp测试并非完全成功(错误的正面),打开但已过滤。所以错误的初步假设在我身边。仍然有点意外,它在另一台服务器上工作得很好,我过去设置它并且相当确定我没有要求明确的端口打开......但是防火墙规则可能在此期间发生了变化。

所以我们通过添加别名来快速修复我们的问题,现在按预期工作...... enter image description here