我们正在将软件从 SQL 2000 升级到 2008 R2。我们的客户将安装一个更新,该更新将卸载 2000 并在同一实例下安装 2008 R2。因此,如果不存在实例,则不会设置实例名称(默认)。但是,问题始于拥有命名 SQL 实例的客户。
从 2008 R2 开始(不确定之前的版本),出于某种原因,客户端通过实例名称连接到服务器失败。我正在从 Management Studio 进行测试 - 如果我无法连接它,那么什么都无法连接。我浏览网络服务器,并在列表中找到特定的服务器\实例。但是,在尝试连接到实例名称时MyServer\INST
,我得到:
A network-related or instance-specific error occurred while establishing
a connection to SQL Server. The server was not found or was not accessible.
Verify that the instance name is correct and that SQL Server is configured
to allow remote connections. (provider: SQL Network Interfaces, error: 26 -
Error Locating Server/Instance Specified) (Microsoft SQL Server, Error: -1)
我确实启用了 TCP/IP 和命名管道协议,这是我做的第一件事。当我使用逗号 (,) 和端口号(如)连接到服务器时MyServer, 49195
,它工作正常。因此,看来客户端计算机只是无法识别实例名称。这发生在我们安装的所有 SQL 2008 R2 以及所有客户端计算机(包括 Win 7、XP、Vista、Server 2008 和 Server 2003)上。我们在早期版本的 SQL 上从未遇到过此类问题。即使防火墙和防病毒软件都被禁用,问题仍然存在。
现在,这是一个大型更新,我们将很快将其分发给所有客户,我们希望尽量减少他们安装此更新所需的交互。我们绝对不喜欢使用端口号,因为它总是不同的,我们必须修改每个客户端以指向此服务器/端口。我们的一些客户可能有数百台客户端计算机。如何使客户端与命名 SQL 实例的连接再次工作?毕竟,这是命名实例的全部目的,如果客户端无法通过其名称连接到此实例,那么它到底是为了什么而命名的?
编辑
有人提到要确保 SQL Browser 正在运行,所以我检查了一下,它确实在运行。服务器还可以连接到其自身(本地)——只是外部连接被拒绝。
更新
经过更仔细的检查,我发现测试时防火墙并未完全禁用,完全禁用后,防火墙便可正常工作。因此,看来 SQL Browser 被防火墙阻止外部客户端访问。
答案1
尝试禁用防火墙,因为它可能会阻止 SQL Browser 的端口 1434
答案2
SQL Browser 服务是否已启用并启动?
http://www.mssqltips.com/sqlservertip/1946/overview-of-the-sql-server-browser-service/
答案3
SQL Server 2005+ 在识别服务器实例方面与 2000 的工作方式不同。
SQL 浏览器服务可能没有运行。
看这里。
在 SQL Server 2000 中,服务器连接端点的识别由 SQL Server 服务执行。SQL Server 2005 用 SQL Server Browser 服务取代了该功能。