建置連線 URL

下載 JDBC 驅動程式 (部分機器翻譯)

連接 URL 的一般格式為

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

其中:

  • jdbc:sqlserver:// (必要項) - 也就是子通訊協定,且為常數。

  • serverName (選擇項) - 是要連線的伺服器位址。 此位址可以是 DNS 或 IP 位址,也可以是本機電腦的 localhost127.0.0.1。 如果未在連接 URL 中指定,就必須在屬性集合中指定伺服器名稱。

  • instanceName (選擇項) - 是 serverName 上要連線的執行個體。 如果未指定,將會連接到預設執行個體。

  • portNumber (選擇項) - 是 serverName 上要連線的連接埠。 預設值為 1433。 如果您使用預設連接埠,則不需在 URL 中指定連接埠,也不需指定前面的 :

    注意

    若要達到最佳的連接效能,在連接到具名執行個體時應設定 portNumber。 如此可避免為了判斷通訊埠號碼而徒勞往返於伺服器。 如果使用 portNumberinstanceName,則會優先使用 portNumber,而且會忽略 instanceName

  • property (選擇項) - 是一或多個選項連線屬性。 如需詳細資訊,請參閱設定連線屬性。 可以指定清單中的任何屬性。 屬性只能使用分號 (;) 來分隔,且不能重複。

警告

為了安全起見,您應該避免根據使用者輸入來建立連接 URL。 應該只在 URL 中指定伺服器名稱和驅動程式。 至於使用者名稱和密碼值,請使用連接屬性集合。 如需有關 JDBC 應用程式中安全性的詳細資訊,請參閱保護 JDBC 驅動程式應用程式

連線內容

如需可在連接字串中設定之屬性的詳細清單,請參閱設定連線屬性 (部分機器翻譯)。

連線範例

使用一個使用者名稱及密碼,連接至本機電腦上的預設資料庫:

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

注意

雖然先前的範例是在連接字串中使用使用者名稱及密碼,但是您應該使用整合式安全性,因為它更安全。 如需詳細資訊,請參閱本文章稍後的整合式驗證連線章節。

下列連接字串示範如何從 Microsoft JDBC Driver for SQL Server 支援的任何作業系統上執行的應用程式,使用整合式驗證與 Kerberos 連線到 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 的具名執行個體,您可以指定具名執行個體的連接埠號碼 (偏好選項)。 您也可以將執行個體名稱指定為 JDBC URL 屬性或資料源屬性。 如果沒有指定執行個體名稱或通訊埠號碼屬性,則會建立預設執行個體的連接。 請參閱下列範例:

  • 若要指定連接埠號碼,請使用下列格式:

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

  • 若要使用 JDBC URL 屬性,請使用下列格式:

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

逸出連線 URL 中的值

如果值包含空格、分號和引號這類特殊字元,則您可能需要逸出連線 URL 值的特定部分。 JDBC 驅動程式透過將字元括在大括弧中來支援逸出這些字元。 例如,{;} 可逸出分號。

在 8.4 版之前,逸出值可以包含特殊字元 (特別是 =;[] 和空格),但不能包含大括弧。 必須逸出和包含大括弧的值,應該加入屬性集合中。

在 8.4 版與更新版本中,逸出值可以包含特殊字元 (包括大括弧)。 不過,必須逸出右大括弧。 例如,若密碼為 pass";{}word,連接字串就必須逸出該密碼,如下所示:

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

注意

大括弧內的空格是常值,不會被修剪。

在 Windows 上使用整合式驗證連線

JDBC 驅動程式支援在 Windows 作業系統上,透過 integratedSecurity 連接字串屬性來使用類型 2 整合式驗證。 若要使用整合驗證,請將 mssql-jdbc_auth-<version>-<arch>.dll 檔案複製到 JDBC 驅動程式所安裝電腦上 Windows 系統路徑的目錄。

mssql-jdbc_auth-<version>-<arch>.dll 檔案會安裝於下列位置:

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

針對 Microsoft JDBC Driver for SQL Server 支援的任何作業系統,請參閱使用 Kerberos 整合式驗證連線到 SQL Server,以取得 Microsoft JDBC Driver 4.0 for SQL Server 中所新增功能的描述,讓應用程式能夠搭配類型 4 Kerberos 使用整合式驗證連線到資料庫。

注意

如果您執行的是 32 位元的 Java Virtual Machine (JVM),即使作業系統為 x64 版,也請使用 x86 資料夾中的 mssql-jdbc_auth-<version>-<arch>.dll 檔案。 如果您是在 x64 處理器上執行 64 位元的 JVM,請使用 x64 資料夾中的 mssql-jdbc_auth-<version>-<arch>.dll 檔案。

或者,您也可以設定 java.library.path 系統屬性來指定 mssql-jdbc_auth-<version>-<arch>.dll 的目錄。 例如,如果 JDBC Driver 安裝在預設目錄中,您就可以在 Java 應用程式啟動時,使用下列虛擬機器 (VM) 引數來指定 DLL 的位置:

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

以 IPv6 位址連線

JDBC 驅動程式支援使用 IPv6 位址搭配連線屬性集合,以及搭配 serverName 連接字串屬性。 連接字串中的 IPv6 位址不支援初始 serverName 值,例如 jdbc:sqlserver://serverName。 針對 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);

另請參閱