【问题标题】:can't connect to SQL named instance with native client 11 (SQLNCLI11)无法使用本机客户端 11 (SQLNCLI11) 连接到 SQL 命名实例
【发布时间】:2015-10-15 00:36:09
【问题描述】:

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

复制在其他 SQL 主机上运行良好。 在 SQL 2012 上,我无法连接到分销商。我已经缩小到 OLE 连接。用最新的 sql native 客户端发现了奇怪的结果

$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

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

sql server 浏览器正在运行

【问题讨论】:

    标签: sql-server database-replication


    【解决方案1】:

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

    【讨论】:

    • 感谢您的快速提示(顺便说一句,我不知道 :)),我已经编辑了主要帖子,并执行了与 SQL 服务浏览器相关的检查......仍然没有运气...
    • 如果 SQL Server 正在侦听 1433 默认端口,请仅指定主机名。实例监听 1433 端口时无需指定实例名称。客户端默认尝试连接 1433 端口,无论是否命名实例。
    • 我在一个 SQL 复制中,复制分发者本身发送分发者端点并且只接受完整的命名实例(即使默认端口上也存在......)。这是我尝试更改但没有成功的第一件事...找到了 microsoft Premiere guy 的解决方案...
    【解决方案2】:

    最终我在端口 1434 上的 udp 测试并没有完全成功(错误的肯定),打开但过滤了。所以我这边的初始假设是错误的。它在另一台服务器上运行良好仍然有点令人惊讶,我过去设置它并且相当确定我没有要求明确的端口开放......但与此同时防火墙规则可能发生了变化。

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

    【讨论】:

      猜你喜欢
      • 2013-12-01
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多