3

我需要设置一个到 SQL Server 的 JDBC 连接字符串。这个问题类似于C# ADO.Net 连接问题。这是特定于 JDBC 连接字符串的。

JDBC 字符串的常用格式是“jdbc:sqlserver://{host}:{port}”。现在,对于 SQL 服务器集群,我有一个集群名称 vvv\iii ({virtual server}{instance name})。

使用 vvv\iii 字符串作为服务器名称时,通过“到 SQL Server 的新数据源”向导设置 ODBC 连接没有问题。但是,JDBC 连接字符串似乎需要特定的主机和端口。

有没有办法让 JDBC 连接字符串到 SQL Server 集群?

4

5 回答 5

7

事实证明,您可以在 JDBC 字符串中使用“instanceName”属性,如Microsoft Technet 页面上的“命名和多个 SQL Server 实例”部分所述。在我的情况下,虚拟服务器 vvv 和数据库实例名称 iii 的以下字符串有效:

“jdbc:sqlserver://vvv;instanceName=iii”

于 2009-07-22T03:55:15.010 回答
2

在集群或独立环境中使用 SQL Server 命名实例时,每个 SQL Server 实例都会在启动时动态分配一个端口号。SQL Server Browser 服务器处理对每个实例的请求,因为每次服务器重新启动都可能更改每个实例使用的端口号。在服务器重新启动时启动的第一个实例分配为 1433,但如果您有 2 个实例,则不能保证其中一个将始终获得 1433。有几个变量会影响实例启动所需的启动和恢复时间。这可以每次改变。

这很可悲......当连接到命名实例时,jdbc 连接字符串应如下所示:jdbc:sqlserver://server_name/db_name;instance=instance_name

而不是这个 jdbc:sqlserver://server_name:1433/db_name;instance=instance_name

请注意,默认数据库“/db_name”是可选的。如果排除连接将使用分配给 SQL Server 登录的默认数据库。

于 2013-09-27T22:15:57.820 回答
0

集群资源有一个主机名和一个监听端口。使用 j dbc:sqlserver://{virtualserver}:1433(如果不监听默认端口,则使用适当的监听端口)。

于 2009-07-21T16:26:09.623 回答
0

确保您关闭端口定义,因为集群会为您确定这一点。

所以我的数据源定义看起来像:

jdbc:sqlserver://sqlcluster_hostname\instancename;DATABASENAME=databasename;sendStringParametersAsUnicode=false;SelectMethod=direct

我在尝试设置 Railo 数据源以连接到 MSSQL 集群时遇到了这个问题。

稍微偏离主题...如果您将端口字段留空,则标准 Railo 数据源 MSSQL 驱动程序选项将端口设置为“-1”,但是如果将其设置为“0”,则它会完全删除端口定义,然后一切正常。但最好的方法是选择“Other - JDBC Driver”来完整定义 JDBC 连接字符串,如上。

于 2014-02-07T03:20:02.883 回答
0

我会评论 马克斯图尔特的言论,但缺乏声誉。我的消息来源没有提到 /db_name ,我也无法让它工作。也许是另一种混淆实例名称的情况?

于 2013-12-04T09:55:31.977 回答