2009-07-21 2 views
3

Мне нужно настроить строку соединения JDBC на SQL Server. Этот вопрос похож на C# ADO.Net connection question. Это относится к строкам соединения JDBC.Строка соединения JDBC для кластера SQL Server

Обычный формат для строки JDBC: «jdbc: sqlserver: // {host}: {port}». Теперь для кластера SQL-сервера у меня есть имя кластера vvv \ iii ({virtual server} {имя экземпляра}).

Нет проблем с настройкой соединения ODBC с помощью мастера «Новый источник данных для SQL Server» при использовании строки vvv \ iii в качестве имени сервера. Однако, похоже, для строки подключения JDBC требуется определенный хост и порт.

Есть ли способ подключить строку JDBC к кластеру SQL Server?

ответ

7

Оказалось, что вы можете использовать свойство instanceName в строке JDBC, как указано на Microsoft Technet page в разделе «Именованные и множественные экземпляры SQL Server». То, что сработало в моем случае была следующей строкой для VVV виртуального сервера и имени экземпляра базы данных III:

«JDBC: SQLServer: // VVV; имя_экземпляр = III»

+0

Мне не нравится принимать мой собственный ответ, но пока он самый лучший ;-) – pythonquick

0

Ресурс кластера имеет имя хоста и порт прослушивания. Используйте j dbc:sqlserver://{virtualserver}:1433 (или соответствующий порт прослушивания, если не прослушивание по умолчанию).

2

При использовании SQL Server с именем экземпляр в кластере или автономной среде каждый экземпляр SQL Server динамически присваивает номер порта при запуске. Сервер SQL Server Browser обрабатывает запросы к каждому экземпляру, потому что каждый перезапуск сервера может изменить номер порта, используемый каждым экземпляром. Первый экземпляр для запуска перезагрузки сервера получает 1433, но нет гарантии, если у вас есть 2 экземпляра, один из которых всегда будет получать 1433. Существует несколько верификаций, которые влияют на время запуска и восстановления, необходимое для запуска экземпляра. Это может меняться каждый раз.

что грустить ... при подключении к именованному экземпляру JDBC строка соединения должна выглядеть следующим образом: : SQLServer JDBC: // имя_сервер/имя_базы_данным; экземпляр = instance_name

вместо этого : SQLServer JDBC : // имя_сервера: 1433/db_name; экземпляр = имя_участника

Обратите внимание, что база данных по умолчанию «/ db_name» является необязательной. Если исключено, соединение будет использовать базу данных по умолчанию, назначенную для входа в SQL Server.

0

Я бы прокомментировал комментарий Mark Stewart, но репутации не хватает. My source не упоминает/db_name, и я не могу заставить его работать. Может быть, еще один случай confused instance names?

0

Убедитесь, что вы оставите определение порта выключенным, так как кластер определит это для вас.

Так мое определение DataSource выглядит следующим образом:

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

Я столкнулся с этой проблемой при попытке настроить источник данных Railo для подключения к MSSQL кластера.

Немного от темы ...Стандартная опция драйвера источника данных Railo datasource MSSQL устанавливает порт в «-1», если оставить поле порта пустым, но если вы установите его на «0», тогда он полностью удалит определение порта, а затем все будет работать. Но лучшим способом является выбор «Другое - Драйвер JDBC» для определения строки соединения JDBC в полном объеме, как указано выше.

Смежные вопросы