Формирование URL-адреса соединения

Скачать драйвер JDBC

Обычно URL-адреса соединения выглядят следующим образом:

jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]

Где:

  • jdbc:sqlserver:// (обязательно) — называется подпротоколом и является константой.

  • имя _сервера (необязательно) — адрес сервера для подключения. Этот адрес может быть DNS или IP-адрес, или он может быть localhost или 127.0.0.1 для локального компьютера. Имя сервера необходимо указать в коллекции свойств, если оно не указано в URL-адресе соединения.

  • instanceName (необязательно) — это имя экземпляра, к которому необходимо подключиться на serverName. Если этот параметр не указан, драйвер подключается к экземпляру по умолчанию.

  • portNumber (необязательно) — порт для подключения к serverName. Значение по умолчанию — 1433. Если вы используете порт по умолчанию, вам не нужно указывать порт, ни предыдущий : в URL-адресе.

    Примечание.

    Для оптимальной производительности подключения установите portNumber, когда подключаетесь к именованному экземпляру. Это позволяет избежать кругового пути к серверу, чтобы определить номер порта. Если вы используете как portNumber, так и instanceName, то portNumber имеет приоритет, и instanceName игнорируется.

  • свойство (необязательно) — это одно или несколько опционных свойств подключения. Дополнительные сведения см. в статье о настройке свойств подключения. Можно указать любое свойство из списка. Свойства можно разделять только с помощью точки с запятой (;), и их нельзя дублировать.

Внимание

В целях безопасности не рекомендуется составлять URL-адрес соединения на основе данных пользователей. В URL-адресе необходимо указывать только имя сервера и драйвер. Для указания значений имени пользователя и пароля следует использовать коллекции свойств соединения. Дополнительные сведения о безопасности в приложениях JDBC см. в статье Защита приложений JDBC Driver.

Свойства подключения

Подробный список свойств, которые можно установить в строке подключения, см. в разделе Установка свойств подключения.

Примеры подключений

Подключитесь к базе данных по умолчанию на локальном компьютере с помощью имени пользователя и пароля:

jdbc:sqlserver://localhost;encrypt=true;user=MyUserName;password=<password>;

Примечание.

Хотя в предыдущем примере используется имя пользователя и пароль в строка подключения, следует использовать встроенную безопасность, так как она более безопасна. Дополнительные сведения см. в разделе "Подключение с интегрированной проверкой подлинности" далее в этой статье.

Пример строки подключения показывает, как подключиться к базе данных SQL Server с использованием встроенной аутентификации и Kerberos из приложения, работающего в любой операционной системе, поддерживаемой драйвером Microsoft JDBC для SQL Server.

jdbc:sqlserver://;servername=server_name;encrypt=true;integratedSecurity=true;authenticationScheme=JavaKerberos
  • Подключитесь к базе данных по умолчанию на локальном компьютере с помощью встроенной проверки подлинности:

    jdbc:sqlserver://localhost;encrypt=true;integratedSecurity=true;

  • Подключитесь к именованной базе данных на удаленном сервере:

    jdbc:sqlserver://localhost;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;

  • Подключитесь к удаленному серверу с использованием порта по умолчанию:

    jdbc:sqlserver://localhost:1433;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;

  • Подключитесь, указав настраиваемое имя приложения:

    jdbc:sqlserver://localhost;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;applicationName=MyApp;

Именованные и множественные экземпляры SQL Server

SQL Server позволяет устанавливать несколько экземпляров базы данных на сервер. Каждый экземпляр имеет определенное имя. Для подключения к именованному экземпляру SQL Server можно указать номер порта именованного экземпляра (предпочтительно). Можно также указать имя экземпляра как свойство URL-адреса JDBC или свойство источника данных. Если имя экземпляра или свойство номера порта не указано, драйвер создает подключение к экземпляру по умолчанию. См. следующие примеры.

  • Чтобы указать номер порта, используйте следующий формат:

    jdbc:sqlserver://localhost:1433;encrypt=true;integratedSecurity=true;<more properties as required>;

  • Чтобы использовать свойство URL-адреса JDBC, используйте следующий формат:

    jdbc:sqlserver://localhost;encrypt=true;instanceName=instance1;integratedSecurity=true;<more properties as required>;

Экранирование значений в URL-адресе подключения

Может потребоваться экранировать определенные части значений URL-адреса соединения, если значения содержат специальные символы, такие как пробелы, точки с запятыми и кавычки. Драйвер JDBC поддерживает экранирование этих символов, заключая их в скобки. Например, {;} экранирует точку с запятой.

До версии 8.4 escape-значения могут содержать специальные символы (особенно =, ;и []пробел), но не могут содержать фигурные скобки. Значения, которые необходимо преобразовать, и значения, содержащие скобки, следует добавить к коллекции свойств.

В версии 8.4 и более поздних экранированные значения могут содержать специальные символы, включая фигурные скобки. Однако закрывающие фигурные скобки должны быть экранированы. Например, при использовании пароля pass";{}word в строке подключения необходимо будет экранировать пароль следующим образом:

jdbc:sqlserver://localhost;encrypt=true;username=MyUsername;password={pass";{}}word};

Примечание.

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

Подключение с интегрированной проверкой подлинности в Windows

Драйвер JDBC поддерживает использование встроенной проверки подлинности типа 2 в операционных системах Windows с использованием свойства строки подключения integratedSecurity. Чтобы использовать встроенную проверку подлинности, скопируйте mssql-jdbc_auth-<version>-<arch>.dll файл в любой каталог, включенный в переменную системной PATH среды Windows.

Примечание.

Библиотека DLL не должна находиться в том же каталоге, что и JAR-файл драйвера JDBC. Он должен быть в каталоге, указанном в системе PATH, например C:\Windows\System32 или в пользовательском каталоге, который вы добавили в PATH.

Файлы mssql-jdbc_auth-<version>-<arch>.dll устанавливаются в следующем расположении:

<installation directory>\sqljdbc_<version>\<language>\auth\

Сведения о любой операционной системе, поддерживаемой драйвером Microsoft JDBC для SQL Server, см. в статье "Использование интегрированной проверки подлинности Kerberos для подключения к SQL Server " для описания функции, добавленной в Microsoft JDBC Driver 4.0 для SQL Server, которая позволяет приложению подключаться к базе данных с помощью интегрированной проверки подлинности с типом 4 Kerberos.

Примечание.

Если вы используете 32-разрядную виртуальную машину Java (JVM), используйте mssql-jdbc_auth-<version>-<arch>.dll файл в папке x86, даже если операционная система является версией x64. Если вы используете 64-разрядную виртуальную машину JVM на процессоре x64, используйте mssql-jdbc_auth-<version>-<arch>.dll файл в папке x64.

Кроме того, можно задать системное свойство java.library.path, чтобы указать каталог объекта mssql-jdbc_auth-<version>-<arch>.dll. Например, если вы установили драйвер JDBC в каталоге по умолчанию, можно указать расположение библиотеки DLL с помощью следующего аргумента виртуальной машины при запуске приложения Java:

-Djava.library.path=C:\Microsoft JDBC Driver 6.4 for SQL Server\sqljdbc_<version>\enu\auth\x86

Подключение с помощью IPv6-адресов

Драйвер JDBC поддерживает использование IPv6-адресов с коллекцией свойств подключения и свойством строки подключения serverName. Начальное serverName значение, например jdbc:sqlserver://serverName, не поддерживается для IPv6-адресов в строке подключения. Использование имени для serverName вместо первоначального IPv6-адреса работает во всех случаях подключения. Следующие примеры можно использовать как дополнительные источники сведений.

  • Использование свойства serverName

    jdbc:sqlserver://;serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1;encrypt=true;integratedSecurity=true;

  • Использование коллекции свойств

    Properties pro = new Properties();

    pro.setProperty("serverName", "serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1");

    Connection con = DriverManager.getConnection("jdbc:sqlserver://;encrypt=true;integratedSecurity=true;", pro);