Поделиться через


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

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

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

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

Где:

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

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

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

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

    Примечание.

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

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

Внимание

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

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

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

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

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

jdbc:sqlserver://localhost;encrypt=true;user=MyUserName;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 файл в каталог на системном пути Windows на компьютере, на котором установлен драйвер JDBC.

Файлы 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 следует использовать файл mssql-jdbc_auth-<version>-<arch>.dll в папке x86, даже если при операционной системе x64. Для 64-разрядной виртуальной машины Java и процессора x64 используйте файл mssql-jdbc_auth-<version>-<arch>.dll в папке x64.

Или можно задать системное свойство java.library.path, чтобы указать каталог, в котором содержится файл mssql-jdbc_auth-<version>-<arch>.dll. Например, если драйвер JDBC установлен в каталоге по умолчанию, можно указать местоположение файла DLL, использовав следующий аргумент виртуальной машины (VM) при запуске приложения 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);