sql-server - 从 Windows 64 位连接到 SQL Server 命名实例

标签 sql-server networking firewall named-instance

我有 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/

相关文章:

C# 将通过远程桌面(或其他)在本地运行的 WinForm 应用程序连接到数据库

SQL Server 数据库上次更新日期时间

c# - 停止重复插入数据库的最佳方法是什么

amazon-web-services - 无法在 VPC 中创建子网 - 获取 "Not with in Range error"

azure - Kubernetes - 服务集群IP地址与Pod IP地址

python - GAE 可以限制我的 websocket 连接吗?

防火墙 - 构建或购买

sql - 选择同一表关系 SQL Server 中的所有父项或子项

php - sql查询不适用于三个表连接

c# - 如何检测防病毒/防火墙是否阻止我的应用程序?