連接 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);