从Windows 64bit连接到SQL Server命名实例

时间:2012-04-30 22:37:37

标签: sql-server networking firewall named-instance

我使用Microsoft Windows Server 2003企业版在应用服务器上运行java和.net应用程序。这些正在迁移到另一个应用服务器Windows 2008 64位计算机。

所有应用程序都连接到命名实例上的同一SQL Server 2005数据库。

到目前为止,我已尝试完全按原样移动应用程序,而不会更改配置文件,从旧框到新框。

在新的app服务器上,java和.net应用程序都没有连接到数据库(命名实例)。

  

JDBC错误消息:“与命名实例的连接失败。错误:java.net.SocketTimeoutException:接收超时。”

     

在.NET错误消息:“在建立SQL Server的连接时发生网络相关的或特定于实例错误服务器没有被发现或无法访问”

如果我将数据库配置更改为命名实例上的配置,则它可以在新的应用服务器上运行。

数据库设置正确,因为我们能够在旧的应用服务器上进行连接。我可以从新的应用服务器ping数据库服务器。

这有什么理由不适用于新的应用服务器吗?

  

的java连接字符串: “JDBC:微软:SQLSERVER:// [DBSERVERNAME]; SelectMethod =光标;实例名= [dbinstance具备]”

     

达网络连接字符串: “服务器= [DBSERVERNAME] \ [dbinstance具备];数据库= Risk_DB; UID = [用户]; PWD = [PWD];”

更新 根据答案中的建议,我得到了实例端口号。我还安装了SQL Server Management Studio,因此我可以消除我的应用程序作为问题点。从Management Studio中,如果我使用[服务器] [实例],我得到的消息“而与SQL Server建立连接的网络相关的或特定于实例的错误...”但它工作时我使用[服务器],[港口]。不知道是否还有解决方法吗?

更新#2 将问题上报给基础架构/服务器/网络团队。他们在新的应用服务器上禁用了Windows防火墙。 Presto,现在我可以连接到Management Studio中的[dbservername] \ [dbinstance],并且所有应用程序都在使用现有配置文件。

2 个答案:

答案 0 :(得分:5)

您的命名实例将在另一个端口上运行。端口1433(默认实例的默认设置)可能已打开,并且可能阻止运行命名实例的端口。您可以在错误日志中检查命名实例的端口(假设您可以在本地连接,在对象资源管理器中,展开服务器,展开管理,展开SQL Server日志,右键单击当前,然后选择“查看SQL Server日志”IIRC ),它会在启动时说出类似的内容:

Server is listening on [ 127.0.0.1 <ipv4> 3587 ].

最后一个数字是需要从远程计算机访问的端口号以及它必须通过的任何网络设备和服务才能到达。如果找不到这样的行,则可能没有为命名实例启用TCP / IP。在该服务器上,转到SQL Server配置管理器,展开SQL Server网络配置,单击“协议”,并确保在右窗格中启用了TCP / IP。如果必须启用此功能,则需要重新启动SQL Server才能使其生效。

如果已经启用(或启用它并重新启动服务),您应该能够刷新此视图并验证正在使用的端口,如果右键单击TCP / IP,命中属性,然后移动到IP地址选项卡。您可以看到当前用于每个IP的端口。这里将有多个IPn部分和一个IPAll部分。对于每个IP,您可以将“TCP端口”框更改为要使用的端口(并将所有“动态TCP端口”框中的任何值删除为0)。点击Apply并重启服务。这将再次需要重新启动服务,但允许您指定特定端口,以便您可以向防火墙添加排除项(或使用已存在的排除项,假设此服务器尚未使用该端口)。 / p>

答案 1 :(得分:0)

可能的问题:

  • 防火墙可能会阻止连接。
  • 实例名称与连接字符串中指定的名称不同。
  • 连接字符串指定不同的端口或SQL Server在不同的端口上运行,而不是默认的1433