我有 java 和 .net 应用程序在使用 Microsoft Windows Server 2003 企业版的应用程序服务器上运行。这些正在迁移到另一个应用程序服务器 Windows 2008 64 位机器。
所有应用程序都连接到命名实例上的同一个 SQL Server 2005 数据库。
到目前为止,我已尝试将应用程序原封不动地从旧机器迁移到新机器,而没有更改配置文件。
在新的应用服务器上,java 和 .net 应用程序都没有连接到数据库(命名实例)。
JDBC error message: "The connection to the named instance has failed. Error: java.net.SocketTimeoutException: Receive timed out."
The .net error message: "A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible."
如果我将数据库配置更改为不在命名实例上的配置,它可以在新的应用服务器上运行。
数据库设置正确,因为我们能够连接到旧的应用程序服务器。我可以从新的应用服务器 ping 数据库服务器。
这在新的应用服务器上不起作用有什么原因吗?
java connection string: "jdbc:microsoft:sqlserver://[dbservername];SelectMethod=Cursor;instanceName=[dbinstance]"
.net connection string: "Server=[dbservername]\[dbinstance];Database=Risk_DB;Uid=[user];Pwd=[pwd];"
更新 根据答案中的建议,我得到了实例端口号。我还安装了 SQL Server Management Studio,这样我就可以消除我的应用程序的问题点。在 Management Studio 中,如果我使用 [servername][instancename],我会收到消息“在建立与 SQL Server 的连接时出现与网络相关或特定于实例的错误...”但是当我使用 [servername]、[港口]。不确定是否有办法解决这个问题?
UPDATE #2 将问题上报给基础架构/服务器/网络团队。他们在新的应用服务器上禁用了 Windows 防火墙。 Presto,现在我可以连接到 Management Studio 中的 [dbservername]\[dbinstance],并且所有应用程序都在使用现有的配置文件。
最佳答案
您的命名实例将在不同的端口上运行。端口 1433(默认实例的默认端口)可能已打开,而运行命名实例的端口可能已被阻止。您可以检查命名实例的错误日志中的端口(假设您可以在本地连接,在对象资源管理器中,展开服务器,展开管理,展开 SQL Server 日志,右键单击当前,然后选择“查看 SQL Server 日志”IIRC ), 它会在启动时说这样的话:
Server is listening on [ 127.0.0.1 <ipv4> 3587 ].
最后一个数字是需要从您的远程计算机访问的端口号,以及到达那里必须经过的任何网络设备和服务。如果您没有找到这样的一行,则可能是未为命名实例启用 TCP/IP。在该服务器上,转到 SQL Server 配置管理器,展开 SQL Server 网络配置,单击“协议(protocol)”并确保在右 Pane 中启用了 TCP/IP。如果必须启用它,则需要重新启动 SQL Server 才能生效。
如果它已经启用(或者一旦您启用它并重新启动服务),您应该能够刷新此 View 并验证正在使用的端口,如果您右键单击 TCP/IP,点击属性,然后移动到 IP 地址选项卡。您可以看到当前每个 IP 的端口。这里会有多个 IPn 部分和一个 IPAll 部分。对于每个 IP,您可以将“TCP 端口”框更改为您要使用的端口(并将所有“动态 TCP 端口”框中的任何值删除为 0)。点击应用并重新启动服务。这将再次需要重新启动服务,但将允许您指定一个特定的端口,以便您可以向防火墙添加一个排除项(或者使用一个已经存在的,假设该服务器尚未使用该端口)。
关于sql-server - 从 Windows 64 位连接到 SQL Server 命名实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10391468/