sql-server - 无法从另一个 SQL Server 连接到 SQL Server 命名实例

标签 sql-server sql-server-2012

我希望得到一些帮助,因为我在这个问题上已经被困了 2 天了!

场景:我可以从我的开发计算机(和其他同事)连接到 SERVER\INSTANCE,但无法从另一个 SQL Server 连接。我得到的错误是通用的“...验证实例名称是否正确...”。我已经完成/验证的事情:

  1. 我已禁用目标(和源)服务器上的防火墙,以查看是否存在防火墙问题(这似乎很可能是因为我可以从我的计算机进行连接,但这没有帮助)。

  2. 我已验证 SQL 浏览器正在运行(这是因为我可以从开发计算机进行连接)

  3. 由于两个 SQL Server 都有多个实例和硬编码端口,我什至确保它们是不同的端口,以防出现一些冲突(这没有帮助)。

  4. 我已重新启动 SQL Server 并验证浏览器/实例服务正在运行

  5. 已检查事件日志 - 没有任何值得注意的内容

  6. 有趣的是,如果我不通过实例名称连接,而是通过第二个服务器的动态端口(即 SERVER、PORT)连接,它工作正常 - 这表明 SQL 浏览器有问题,除了它在本地服务器和我的开发机器上运行良好。

有什么想法和建议吗?谢谢。

编辑:为了澄清注释,我将数据 SQL Server 称为 SQLA,将非数据 SQLB 称为 SQLB。

编辑#2:添加更多测试用例/信息:

说明:以上测试都是通过SSMS接口(interface)建立数据库连接,涉及的数据库都是2012年的。

新测试用例:我尝试运行脚本来设置链接服务器,发现在 SQL Server 2005 机器上运行该脚本工作正常,但在 SQL Server 2012 服务器 (SQLB) 上运行相同的脚本无法连接SQLA 出现错误:SQL Server 网络接口(interface):定位指定的服务器/实例时出错 [xFFFFFFFF]。

编辑 #3:缩小潜在问题的范围:

下载并运行PortQry,当从我的开发盒运行时,我得到通过UDP查询1434返回的所有实例,从SQLB运行相同的查询不返回任何实例,它指出1434被过滤,而在开发盒上它返回为 list 。我只能认为这与防火墙相关,除非我在两台机器上都禁用了防火墙

最佳答案

当您使用 Microsoft VPN 通过 VPN 连接到网络时,您无法通过“ServerName\Instance”连接但能够通过“ServerName,Port”连接到服务器的测试用例会发生这种情况。 (我有这个问题)。对于我的 VPN 问题,我只是使用静态端口号来解决它。

这显然是由于 VPN 不转发 UDP 数据包,只允许 TCP 连接。

根据您的情况,您的防火墙或安全设置或防病毒软件或任何可能阻止 UDP 的内容。

我建议您检查防火墙设置以专门允许 UDP

Browser Artical

On startup, SQL Server Browser starts and claims UDP port 1434. SQL Server Browser reads the registry, identifies all SQL Server instances on the computer, and notes the ports and named pipes that they use. When a server has two or more network cards, SQL Server Browser will return all ports enabled for SQL Server. SQL Server 2005 and SQL Server Browser support ipv6 and ipv4.

When SQL Server 2000 and SQL Server 2005 clients request SQL Server resources, the client network library sends a UDP message to the server using port 1434. SQL Server Browser responds with the TCP/IP port or named pipe of the requested instance. The network library on the client application then completes the connection by sending a request to the server using the port or named pipe of the desired instance.

Using a Firewall

To communicate with the SQL Server Browser service on a server behind a firewall, open UDP port 1434 in addition to the TCP port used by SQL Server (for example, 1433).

关于sql-server - 无法从另一个 SQL Server 连接到 SQL Server 命名实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17029073/

相关文章:

c# - Winform 中的 Int 字段不会使用 C# 更新 SQL Server 数据库中的空值

asp.net - 缓存以便稍后写入 ASP.NET Web 服务中的数据库?

c# - 经度 - 纬度方面的多边形点

SQL Server 输出 : How should i proceed to get this output in Table?

sql-server - "Invalid use of a side-effecting operator ' OPEN SYMMETRIC KEY 打开对称 key 时出现 ' within a function."错误

sql - MS SQL Server 零填充

sql-server - 包含数据库的真正好处是什么

sql - 将 SQL 表读入 SparklyR

c# - 在 SQL Server 2005 上执行 SSIS 包

sql-server - 指数数组的边界之外。 (微软.SqlServer.smo)