2009-07-21 22 views
3

我需要将JDBC连接字符串设置为SQL Server。 此问题与C# ADO.Net connection question类似。这个是特定于JDBC连接字符串的。SQL Server群集的JDBC连接字符串

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

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

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

回答

7

事实证明,您可以在JDBC字符串中使用“instanceName”属性,如Microsoft Technet page“命名的和多个SQL Server实例”部分所述。在什么情况下,我的工作是为虚拟服务器VVV和数据库实例名III以下字符串:

“的jdbc:SQLSERVER:// VVV;实例名= III”

+0

我不喜欢接受我自己的答案,但它是目前为止最好的答案;-) – pythonquick 2009-07-28 13:03:10

0

群集资源具有主机名和侦听端口。使用j dbc:sqlserver://{virtualserver}:1433(或者如果不在默认的监听端口上收听,则为合适的监听端口)。

2

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

这是悲伤...连接到命名实例的JDBC连接字符串应该是这样的,当: JDBC:SQLSERVER://服务器名称/ DB_NAME;例如= INSTANCE_NAME

,而不是这个 的jdbc:SQLSERVER :// server_name:1433/db_name; instance = instance_name

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

0

确保在群集为您确定时关闭端口定义。

所以我的数据源定义是这样的:

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

我就遇到了这个问题,而试图建立一个Railo数据源连接MSSQL集群。

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