【问题标题】:How to set instance name with jdbc如何使用 jdbc 设置实例名称
【发布时间】:2016-11-01 08:49:03
【问题描述】:

我正在尝试使用 jdbc 驱动程序连接 MS SQL 服务器。我遇到了错误;

Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall

我认为我的连接 URL 有问题。这是我的连接网址;

jdbc:sqlserver://50.50.50.50\MYINSTANCE:1433;

编辑:我可以毫无问题地将这个 sql server 与一些客户端应用程序 (HeidiSQL) 连接起来。

Network type: Microsoft SQL server (tcp/ip)
Hostname:50.50.50.50\MYINSTANCE
Port: 1433
username:...
password:...

下面一行抛出异常,我可以毫无问题地连接其他一些 sql server。(它们没有任何实例名称)

DriverManager.getConnection(connectionUrl, username, password);

【问题讨论】:

  • 一般形式:jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]。看起来结构良好。
  • 您是否按照信息提示进行了所有检查?
  • 显然对于 HeidiSQL,您没有提供端口?检查以确保您的 SQL Server 正在接受 1433 上的连接。
  • IIRC 需要省略端口号,只指定实例名称并运行 SQL Server 浏览器服务;不过,这些信息可能有点过时了。

标签: java sql-server jdbc


【解决方案1】:

SQL Server 实例MYINSTANCE 可能没有侦听端口 1433。通常,连接 URL 将包含实例名称端口号,而不是两者。当两者都提供时,一个必须优先。

如果同时为 HeidiSQL 指定 Port: 1433 允许您连接,那么 HeidiSQL 似乎优先于实例名称。 SQL Server JDBC 驱动程序则相反:当同时显示实例名称和端口号时,它将优先考虑端口号。

因此,您应该能够使用如下 URL 进行连接:

jdbc:sqlserver://50.50.50.50;instanceName=MYINSTANCE

【讨论】:

    【解决方案2】:

    检查是否有规则阻止 TCP 连接 在 cmd 上执行

    telnet 127.0.0.1 1433
    

    并检查您的 SQL 服务器配置 TCP 端口是否正确。

    【讨论】:

    • 当我“telnet 50.50.50.50 1433”时,我得到“无法在端口 1433 上打开与主机的连接”。
    • 尝试为 SQL server 设置 TCP 端口。开始->所有程序-> Microsoft SQL Server -> 配置工具 -> SQL Server 配置管理器 -> 协议 ->启用 TCP/IP 右键框双击 TCP/IP 并转到 IP 地址 点击并将端口号放在 TCP 端口下。
    猜你喜欢
    • 1970-01-01
    • 2013-12-05
    • 2013-04-08
    • 2022-01-22
    • 1970-01-01
    • 2013-10-14
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多