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

can't connect to SQL named instance with native client 11 (SQLNCLI11)

我正在尝试使用发布者 = SQL 2008 R2 和命名实例 SERVER\UNIVERSE 以及订阅者 = SQL 2012 创建一个 SQL 复制。

复制在其他 SQL 主机上工作正常。 SQL 2012 年,我无法连接到经销商。我已经缩小到 OLE 连接。并在最新的 sql 本机客户端

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

return 跟随错误

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

但奇怪的是,如果我对我的另一个订阅者(SQL 2008R2 和 SQLNCLI10)执行完全相同的命令,命名连接会按预期工作...

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

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

编辑

测试udp

命名实例的端口(默认SQL端口1433)

sql服务器浏览器运行

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

结果是我在端口 1434 上的 udp 测试没有完全成功(误报),打开但被过滤了。我这边的最初假设是错误的。它在另一台服务器上运行良好仍然有点令人惊讶,我过去设置过它并且相当确定我没有要求显式端口打开......但也许防火墙规则在此期间发生了变化。

所以我们通过添加别名快速解决了我们的问题,现在按预期工作...