共用方式為


建立連接 URL

連接 URL 的一般格式為

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

其中:

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

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

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

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

    注意

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

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

警告

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

連接範例

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

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

注意

雖然先前的範例是在連接字串中使用使用者名稱及密碼,但是如果是在 Windows 作業系統上執行應用程式,應該使用整合式安全性,因為它更安全。如需詳細資訊,請參閱本主題稍後的<利用整合式驗證進行連接>一節。

使用整合式驗證,連接到本機電腦上的預設資料庫:

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

連接到遠端伺服器上的具名資料庫:

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

以預設通訊埠連接到遠端伺服器:

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

指定自訂的應用程式名稱以進行連接:

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

具名和多個 SQL Server 執行個體

SQL Server 2000 和 SQL Server 2005 允許在每個伺服器上安裝多個資料庫執行個體。並以特定的名稱識別每個執行個體。若要連接到 SQL Server 的具名執行個體,您可以指定具名執行個體的通訊埠號碼 (偏好選項),或者將執行個體名稱指定為 JDBC URL 屬性或 datasource 屬性。如果沒有指定執行個體名稱或通訊埠號碼屬性,則會建立預設執行個體的連接。請參閱下列範例:

若要使用通訊埠號碼,請執行下列:

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

若要使用 JDBC URL 屬性,請執行下列動作:

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

連接 URL 中的逸出值

因為包含了空格、分號和引號這類特殊字元,可能有需要逸出連接 URL 值中的特定部份。如果字元是內含在大括弧中,JDBC 驅動程式就支援逸出這些字元。例如,{;} 可逸出分號。

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

注意

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

使用整合式驗證進行連接

JDBC 驅動程式支援在 Windows 作業系統上使用類型 2 整合式驗證,方法是透過 integratedSecurity 連接字串屬性。若要使用整合式驗證,請將 sqljdbc_auth.dll 檔複製到安裝 JDBC 驅動程式的電腦上 Windows 系統路徑中的目錄。

sqljdbc_auth.dll 檔會安裝在下列位置:

<安裝目錄>\sqljdbc_<版本>\<語言>\auth\

注意

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

或者,您可以設定 java.libary.path 系統屬性,以指定 sqljdbc_auth.dll 的目錄。例如,如果 JDBC 驅動程式已安裝在預設目錄中,則在啟動 Java 應用程式時,您可以使用下列虛擬機器 (VM) 引數,指定 DLL 的位置:

-Djava.library.path=C:\Microsoft SQL Server 2005 JDBC Driver\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;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://;integratedSecurity=true;", pro);

另請參閱

其他資源

使用 JDBC 驅動程式連接到 SQL Server