建置連線 URL
下載 JDBC 驅動程式 (部分機器翻譯)
連接 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 驅動程式應用程式。
連線內容
如需可在連接字串中設定之屬性的詳細清單,請參閱設定連線屬性 (部分機器翻譯)。
連線範例
使用一個使用者名稱及密碼,連接至本機電腦上的預設資料庫:
jdbc:sqlserver://localhost;encrypt=true;user=MyUserName;password=<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);