利用 OLE DB Driver for SQL Server 使用連接字串關鍵字
適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)
OLE DB Driver for SQL Server 中的某些 API 會使用連接字串來指定連線屬性。 連接字串是關鍵字和關聯值的清單,每一個關鍵字都會識別特定的連線屬性。
注意
OLE DB Driver for SQL Server 允許模稜兩可的連接字串,以維護回溯相容性 (例如,某些關鍵字可能會指定一次以上,而且可能會允許衝突的關鍵字,好讓解決方案以位置或優先順序為根據)。 未來的 OLE DB Driver for SQL Server 版本可能不允許模稜兩可的連接字串。 修改應用程式時,適合使用 OLE DB Driver for SQL Server 來消除任何對於模稜兩可連接字串的相依性。
下列各節描述當使用 OLE DB Driver for SQL Server 作為資料提供者時,可以搭配 OLE DB Driver for SQL Server 和 ActiveX Data Objects (ADO) 使用的關鍵字。
OLE DB 驅動程式連接字串關鍵字
OLE DB 應用程式有兩種方法可初始化資料來源物件:
IDBInitialize::Initialize
IDataInitialize::GetDataSource
在第一個案例中,提供者字串可用來初始化連接屬性,其方式是在 DBPROPSET_DBINIT 屬性集中設定 DBPROP_INIT_PROVIDERSTRING 屬性。 在第二個案例中,初始化字串可以傳遞給 IDataInitialize::GetDataSource 方法來初始化連接屬性。 這兩個方法都會初始化相同的 OLE DB 連接屬性,但是會使用不同的關鍵字集合。 IDataInitialize::GetDataSource 所使用的關鍵字集合,至少是初始化屬性群組內的屬性描述。
如果任何提供者字串設定所包含的對應 OLE DB 屬性設定為預設值或明確設定為某個值,OLE DB 屬性值將在提供者字串中覆寫此設定。
在提供者字串中透過 DBPROP_INIT_PROVIDERSTRING 值所設定的布林屬性,是使用值 yes
和 no
所設定。 在初始化字串中使用 IDataInitialize::GetDataSource 所設定的布林屬性,是使用值 true
和 false
所設定。
使用 IDataInitialize::GetDataSource 的應用程式,也可以使用 IDBInitialize::Initialize 所用的關鍵字,但僅適用於沒有預設值的屬性。 如果應用程式在初始化字串中同時使用 IDataInitialize::GetDataSource 關鍵字和 IDBInitialize::Initialize 關鍵字,則會使用 IDataInitialize::GetDataSource 關鍵字設定。 建議您不要讓應用程式在 IDataInitialize:GetDataSource 連接字串中使用 IDBInitialize::Initialize 關鍵字,因為未來的版本可能無法維護這個行為。
注意
透過 IDataInitialize::GetDataSource 傳遞的連接字串會經由 IDBProperties::SetProperties 轉換成屬性並加以套用。 如果元件服務在 IDBProperties::GetPropertyInfo 中找到屬性描述,此屬性將會作為獨立屬性來套用。 否則,它將會透過 DBPROP_PROVIDERSTRING 屬性來套用。 例如,若您指定連接字串 Data Source=server1;Server=server2,則 Data Source 會設定為屬性,但是 Server 將會進入提供者字串。
如果您指定相同提供者特有之屬性的多個執行個體,將會使用第一個屬性的值。
使用 IDBInitialize::Initialize
OLE DB 應用程式使用的連接字串如果搭配 IDBInitialize::Initialize 使用 DBPROP_INIT_PROVIDERSTRING,其語法如下:
connection-string ::= empty-string[;] | attribute[;] | attribute; connection-string
empty-string ::=
attribute ::= attribute-keyword=[{]attribute-value[}]
attribute-value ::= character-string
attribute-keyword ::= identifier
可以選擇用大括弧括住屬性值,這樣是很好的作法。 此做法可在屬性值包含非英數字元時避免問題發生。 值中的第一個右大括弧應該會結束該值,所以值不能包含右大括弧字元。
連接字串關鍵字 =
符號後面的空格字元應該解譯為常值,即使該值括在引號內也是如此。
下表描述可搭配 DBPROP_INIT_PROVIDERSTRING 使用的關鍵字。
關鍵字 | 初始化屬性 | 描述 |
---|---|---|
Addr | SSPROP_INIT_NETWORKADDRESS | Address 的同義字。 |
位址 | SSPROP_INIT_NETWORKADDRESS | 執行 SQL Server 執行個體的伺服器網路位址。 Address 通常是伺服器的網路名稱,不過也可能是其他名稱,例如管道、IP 位址,或 TCP/IP 通訊埠和通訊端位址。 若您指定 IP 位址,請確定在 SQL Server 組態管理員中已啟用 TCP/IP 或具名管道通訊協定。 使用 OLE DB Driver for SQL Server 時,Address 的值會優先於連接字串中傳遞給 Server 的值。 同時請注意, Address=; 將會連接到 Server 關鍵字中指定的伺服器,而 Address= ;, Address=.; 、Address=localhost; 和 Address=(local); 都會造成與本機伺服器的連接。Address 關鍵字的完整語法如下: [protocol:]Address[,port |\pipe\pipename] protocol 可以是 tcp (TCP/IP)、 lpc (共用記憶體) 或 np (具名管道)。 如需有關通訊協定的詳細資訊,請參閱設定用戶端通訊協定。 如果未指定 protocol 也未指定 Network 關鍵字,OLE DB Driver for SQL Server 將會使用 SQL Server 組態管理員中指定的通訊協定順序。 port 是在指定伺服器上所要連接的通訊埠。 根據預設,SQL Server 會使用連接埠 1433。 |
APP | SSPROP_INIT_APPNAME | 識別應用程式的字串。 |
ApplicationIntent | SSPROP_INIT_APPLICATIONINTENT | 宣告連接到伺服器時的應用程式工作負載類型。 可能的值是 ReadOnly 和 ReadWrite 。預設值為 ReadWrite 。 如需 OLE DB Driver for SQL Server 對於 Always On 可用性群組的支援相關詳細資訊,請參閱 OLE DB Driver for SQL Server 高可用性和災害復原支援。 |
AttachDBFileName | SSPROP_INIT_FILENAME | 可附加資料庫的主要檔案名稱,包括完整路徑名稱。 若要使用 AttachDBFileName,您還必須使用提供者字串 Database 關鍵字來指定資料庫名稱。 如果之前已附加資料庫,則 SQL Server 不會重新附加該資料庫 (此產品會使用附加的資料庫作為連線的預設)。 |
Authentication1 | SSPROP_AUTH_MODE | 指定所使用的 SQL 或 Microsoft Entra 驗證。 有效值為:
注意: ActiveDirectoryIntegrated 關鍵字也可用於向 SQL Server 進行的 Windows 驗證。 該關鍵字會取代 Integrated Security (或 Trusted_Connection ) 驗證關鍵字。 建議使用 Integrated Security (或 Trusted_Connection ) 關鍵字或其對應屬性的應用程式將 Authentication 關鍵字 (或其對應的屬性) 的值設定為 ActiveDirectoryIntegrated ,以啟用新的加密和憑證驗證行為。注意:建議使用 SQL Server 驗證的應用程式將 Authentication 關鍵字 (或其對應的屬性) 的值設定為 SqlPassword ,以啟用新的加密和憑證驗證行為。 |
自動轉譯 | SSPROP_INIT_AUTOTRANSLATE | AutoTranslate 的同義字。 |
AutoTranslate | SSPROP_INIT_AUTOTRANSLATE | 設定 OEM/ANSI 字元轉譯。 可辨識的值為 yes 和 no 。 |
ConnectRetryCount | SSPROP_INIT_CONNECT_RETRY_COUNT | 控制連線遺失的情況下,重新連線嘗試次數。 有效值的範圍為 0 到 255 。 預設值是 1 。 值為 0 會造成不嘗試重新連線。 如需詳細資訊,請參閱閒置連線復原。 |
ConnectRetryInterval | SSPROP_INIT_CONNECT_RETRY_INTERVAL | 若連線遺失,會指定每個連接重試嘗試的間隔秒數。 有效值的範圍為 1 到 60 。 預設值是 10 。 如需詳細資訊,請參閱閒置連線復原。 |
Database | DBPROP_INIT_CATALOG | 資料庫名稱。 |
DataTypeCompatibility | SSPROP_INIT_DATATYPECOMPATIBILITY | 指定要使用的資料類型處理模式。 提供者資料類型和 SQL Server 2000 資料類型的可辨識值分別為 0 和 80 。 |
加密t1 | SSPROP_INIT_ENCRYPT | 指定當透過網路傳送資料以前,是否應該先加密資料。 可能的值是 Optional 、Mandatory 、Strict 。 預設值是 Mandatory 。 若為 18.x.x 版,請參閱 MSOLEDBSQL 主要版本差異。 |
FailoverPartner | SSPROP_INIT_FAILOVERPARTNER | 用於資料庫鏡像的容錯移轉伺服器名稱。 |
FailoverPartnerSPN | SSPROP_INIT_FAILOVERPARTNERSPN | 容錯移轉夥伴的 SPN。 預設值為空字串。 空字串會讓 OLE DB Driver for SQL Server 使用提供者產生的預設 SPN。 |
HostNameInCertificate | SSPROP_INIT_HOST_NAME_CERTIFICATE | 用於驗證 SQL Server TLS/SSL 憑證的主機名稱。 如果未設定 HostNameInCertificate 關鍵字,驅動程式就會使用連線 URL 上的 Server 關鍵字值做為主機名稱,以驗證 SQL Server TLS/SSL 憑證。 注意:如果伺服器憑證受信任,則會忽略這個屬性。 如果 Encrypt 設定為 Strict ,則一律會驗證憑證。 |
語言 | SSPROP_INIT_CURRENTLANGUAGE | SQL Server 語言。 |
MarsConn | SSPROP_INIT_MARSCONNECTION | 當伺服器為 SQL Server 2005 (9.x) 或更新版本時,啟用或停用連接上的 Multiple Active Result Sets (MARS)。 可能的值是 yes 和 no 。 預設值是 no 。 |
MultiSubnetFailover | SSPROP_INIT_MULTISUBNETFAILOVER | 在連線到 SQL Server 可用性群組的可用性群組接聽程式或 SQL Server 容錯移轉叢集執行個體時,一律指定 MultiSubnetFailover=Yes。 MultiSubnetFailover=yes 會設定 OLE DB Driver for SQL Server ,以提供對 (目前) 使用中伺服器更快速的偵測與連接。 可能的值是 Yes 和 No 。 預設值為 No 。 例如:MultiSubnetFailover=Yes 如需 OLE DB Driver for SQL Server 對於 Always On 可用性群組的支援相關詳細資訊,請參閱 OLE DB Driver for SQL Server 高可用性和災害復原支援。 |
Net | SSPROP_INIT_NETWORKLIBRARY | Network 的同義字。 |
Network | SSPROP_INIT_NETWORKLIBRARY | 用來建立組織中 SQL Server 執行個體連線的網路程式庫。 |
Network Library | SSPROP_INIT_NETWORKLIBRARY | Network 的同義字。 |
PacketSize | SSPROP_INIT_PACKETSIZE | 表格式資料流 (TDS) 封包大小。 預設值為 0 (實際值將由伺服器決定)。 |
PersistSensitive | DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO | 接受以 yes 和 no 作為值的字串。 使用 no 時,不允許使用資料來源物件來保存敏感性驗證資訊 |
PWD | DBPROP_AUTH_PASSWORD | SQL Server 登入密碼。 |
Server | DBPROP_INIT_DATASOURCE | SQL Server 執行個體的名稱。 此值必須是網路上的伺服器名稱、IP 位址,或是 SQL Server 組態管理員別名的名稱。 如果沒有指定,就會連接至本機電腦上的預設執行個體。 Address 關鍵字會覆寫 Server 關鍵字。 您可指定下列其中一個選項,連線到本機伺服器上的預設執行個體: 伺服器=; 伺服器=.; 伺服器=(local); 伺服器=(local); 伺服器=(localhost); Server=(localdb)\instancename; 如需有關 LocalDB 支援的詳細資訊,請參閱 OLE DB Driver for SQL Server 的 LocalDB 支援。 若要指定 SQL Server 的具名執行個體,請附加 \InstanceName。 如果未指定伺服器,就會連接到本機電腦上的預設執行個體。 若您指定 IP 位址,請確定在 SQL Server 組態管理員中已啟用 TCP/IP 或具名管道通訊協定。 Server 關鍵字的完整語法如下: 伺服器= [通訊協定: ]伺服器[ ,連接埠] protocol 可以是 tcp (TCP/IP)、 lpc (共用記憶體) 或 np (具名管道)。 下列範例會指定具名管道: np:\\.\pipe\MSSQL$MYINST01\sql\query 上述程式碼行指定具名管道通訊協定 ( np )、本機電腦上的具名管道 (\\.\pipe )、SQL Server 執行個體的名稱 (MSSQL$MYINST01 ),以及具名管道的預設名稱 (sql/query )。如果未指定 protocol 也未指定 Network 關鍵字,則 OLE DB Driver for SQL Server 將會使用 SQL Server 組態管理員中指定的通訊協定順序。 port 是在指定伺服器上所要連接的通訊埠。 根據預設,SQL Server 會使用連接埠 1433。 使用 OLE DB Driver for SQL Server 時,會忽略在連接字串中傳遞給伺服器的值開頭的空格。 |
ServerCertificate | SSPROP_INIT_SERVER_CERTIFICATE | 指定要與 SQL Server TLS/SSL 憑證相符的憑證檔案所在的路徑。 只有在啟用 Strict 加密時,才能使用此選項。 接受的憑證格式為 PEM、DER 和 CER。 如有指定,則會查看提供的憑證是否完全相符,藉此檢查 SQL Server 憑證。 |
ServerSPN | SSPROP_INIT_SERVERSPN | 伺服器的 SPN。 預設值為空字串。 空字串會讓 OLE DB Driver for SQL Server 使用提供者產生的預設 SPN。 |
逾時 | DBPROP_INIT_TIMEOUT | 等候資料來源初始化完成的時間量 (以秒為單位)。 |
TransparentNetworkIPResolution | SSPROP_INIT_TNIR | 在第一個解析的主機名稱 IP 沒有回應,且該主機名稱有多個相關聯的 IP 時影響連線順序。 TNIR 會與 MultiSubnetFailover 互動,以提供不同的連線順序。 可能的值是 Yes 和 No 。 預設值是 Yes 。 如需詳細資訊,請參閱使用透明網路 IP 解析。 |
Trusted_Connection | DBPROP_AUTH_INTEGRATED | 當為 yes 時,此選項會指示 OLE DB Driver for SQL Server 使用 Windows 驗證進行登入驗證。 否則,OLE DB Driver for SQL Server 將會使用 SQL Server 使用者名稱和密碼進行登入驗證,且必須指定 UID 和 PWD 關鍵字。 |
TrustServerCertificate1 | SSPROP_INIT_TRUST_SERVER_CERTIFICATE | 接受以 yes 和 no 作為值的字串。 預設為 no ,這表示將會驗證伺服器憑證。 |
UID | DBPROP_AUTH_USERID | SQL Server 登入名稱。 |
UseFMTONLY | SSPROP_INIT_USEFMTONLY | 控制連線到 SQL Server 2012 (11.x) 及更新版本時,擷取中繼資料的方式。 可能的值是 yes 和 no 。 預設值是 no 。根據預設,OLE DB Driver for SQL Server 會使用 sp_describe_first_result_set 和 sp_describe_undeclared_parameters 預存程序擷取中繼資料。 這些預存程序有一些限制 (例如,在暫存資料表上操作時,這些預存程序會失敗)。 將 UseFMTONLY 設定為 yes ,會指示驅動程式改為使用 SET FMTONLY 進行中繼資料擷取。 |
UseProcForPrepare | SSPROP_INIT_USEPROCFORPREP | 這個關鍵字已被取代,而且 OLE DB Driver for SQL Server 會忽略其設定。 |
WSID | SSPROP_INIT_WSID | 工作站識別碼。 |
[1]:若要提升安全性,使用驗證或存取權杖初始化屬性或是其對應的連接字串關鍵字時,會修改加密和憑證驗證行為。 如需詳細資訊,請參閱加密和憑證驗證。
使用 IDataInitialize::GetDataSource
OLE DB 應用程式使用的連接字串如果使用 IDataInitialize::GetDataSource,其語法如下:
connection-string ::= empty-string[;] | attribute[;] | attribute; connection-string
empty-string ::=
attribute ::= attribute-keyword=[quote]attribute-value[quote]
attribute-value ::= character-string
attribute-keyword ::= identifier
quote ::= " | '
屬性的使用必須符合其範圍內所允許的語法。 例如,WSID 會使用大括號 ( {} ) 字元,而 Application Name 會使用單引號 ( ' ) 或雙引號 ( " ) 字元。 只有字串屬性可以加上引號。 嘗試將整數或列舉屬性加上引號將會產生 Connection String doesn't conform to OLE DB specification
錯誤。
您可以選擇用單引號或雙引號括住屬性值,這樣是很好的做法。 此做法在值包含非英數字元時,可避免問題發生。 所使用的引號字元也可出現在值當中,但必須是雙引號字元。
連接字串關鍵字 = 符號後面的空格字元應該解譯為常值,即使該值括在引號內也是如此。
如果連接字串具有下表所列的多個屬性,將會使用最後一個屬性的值。
下表說明可搭配 IDataInitialize::GetDataSource 使用的關鍵字:
關鍵字 | 初始化屬性 | 描述 |
---|---|---|
存取權杖1 | SSPROP_AUTH_ACCESS_TOKEN | 用來向 Microsoft Entra ID 進行驗證的存取權杖。 注意: 指定此關鍵字並同時指定 UID 、PWD 、Trusted_Connection 或 Authentication 連接字串關鍵字或其對應的屬性/關鍵字是錯誤。 |
應用程式名稱 | SSPROP_INIT_APPNAME | 識別應用程式的字串。 |
Application Intent | SSPROP_INIT_APPLICATIONINTENT | 宣告連接到伺服器時的應用程式工作負載類型。 可能的值是 ReadOnly 和 ReadWrite 。預設值為 ReadWrite 。 如需 OLE DB Driver for SQL Server 對於 Always On 可用性群組的支援相關詳細資訊,請參閱 OLE DB Driver for SQL Server 高可用性和災害復原支援。 |
Authentication1 | SSPROP_AUTH_MODE | 指定所使用的 SQL 或 Microsoft Entra 驗證。 有效值為:
注意: ActiveDirectoryIntegrated 關鍵字也可用於向 SQL Server 進行的 Windows 驗證。 該關鍵字會取代 Integrated Security (或 Trusted_Connection ) 驗證關鍵字。 建議使用 Integrated Security (或 Trusted_Connection ) 關鍵字或其對應屬性的應用程式將 Authentication 關鍵字 (或其對應的屬性) 的值設定為 ActiveDirectoryIntegrated ,以啟用新的加密和憑證驗證行為。注意:建議使用 SQL Server 驗證的應用程式將 Authentication 關鍵字 (或其對應的屬性) 的值設定為 SqlPassword ,以啟用新的加密和憑證驗證行為。 |
自動轉譯 | SSPROP_INIT_AUTOTRANSLATE | 設定 OEM/ANSI 字元轉譯。 可辨識的值為 true 和 false 。 |
連接逾時 | DBPROP_INIT_TIMEOUT | 等候資料來源初始化完成的時間量 (以秒為單位)。 |
連線重試計數 | SSPROP_INIT_CONNECT_RETRY_COUNT | 控制連線遺失的情況下,重新連線嘗試次數。 有效值的範圍為 0 到 255 。 預設值是 1 。 值為 0 會造成不嘗試重新連線。 如需詳細資訊,請參閱閒置連線復原。 |
連線重試間隔 | SSPROP_INIT_CONNECT_RETRY_INTERVAL | 若連線遺失,會指定每個連接重試嘗試的間隔秒數。 有效值的範圍為 1 到 60 。 預設值是 10 。 如需詳細資訊,請參閱閒置連線復原。 |
Current Language | SSPROPT_INIT_CURRENTLANGUAGE | SQL Server 語言名稱。 |
資料來源 | DBPROP_INIT_DATASOURCE | 組織中 SQL Server 執行個體的名稱。 如果沒有指定,就會連接至本機電腦上的預設執行個體。 如需有關有效位址語法的詳細資訊,請參閱本文中對於 Server 關鍵字的說明。 |
DataTypeCompatibility | SSPROP_INIT_DATATYPECOMPATIBILITY | 指定要使用的資料類型處理模式。 提供者資料類型和 SQL Server 2000 (8.x) 資料類型的可辨識值分別為 0 和 80 。 |
Failover Partner | SSPROP_INIT_FAILOVERPARTNER | 用於資料庫鏡像的容錯移轉伺服器名稱。 |
Failover Partner SPN | SSPROP_INIT_FAILOVERPARTNERSPN | 容錯移轉夥伴的 SPN。 預設值為空字串。 空字串會讓 OLE DB Driver for SQL Server 使用提供者產生的預設 SPN。 |
憑證中的主機名稱 | SSPROP_INIT_HOST_NAME_CERTIFICATE | 用於驗證 SQL Server TLS/SSL 憑證的主機名稱。 如果未設定 Host Name In Certificate 關鍵字,驅動程式就會使用連線 URL 上的 Data Source 關鍵字值做為主機名稱,以驗證 SQL Server TLS/SSL 憑證。 注意:如果伺服器憑證受信任,則會忽略這個屬性。 如果 [對資料使用加密] 設定為 Strict ,則一律會驗證憑證。 |
初始目錄 | DBPROP_INIT_CATALOG | 資料庫名稱。 |
初始檔案名稱 | SSPROP_INIT_FILENAME | 可附加資料庫的主要檔案名稱,包括完整路徑名稱。 若要使用 AttachDBFileName,您還必須使用提供者字串 DATABASE 關鍵字來指定資料庫名稱。 如果之前已附加資料庫,則 SQL Server 不會重新附加該資料庫 (此產品會使用附加的資料庫作為連線的預設)。 |
整合式安全性 | DBPROP_AUTH_INTEGRATED | 接受 SSPI 值進行 Windows 驗證。 |
MARS Connection | SSPROP_INIT_MARSCONNECTION | 啟用或停用連接上的 Multiple Active Result Sets (MARS)。 可辨識的值為 true 和 false 。 預設值為 false 。 |
MultiSubnetFailover | SSPROP_INIT_MULTISUBNETFAILOVER | 在連線到 SQL Server 可用性群組的可用性群組接聽程式或 SQL Server 容錯移轉叢集執行個體時,一律指定 MultiSubnetFailover=True。 MultiSubnetFailover=True 會設定 OLE DB Driver for SQL Server ,以提供對 (目前) 使用中伺服器更快速的偵測與連線。 可能的值是 True 和 False 。 預設值為 False 。 例如:MultiSubnetFailover=True 如需 OLE DB Driver for SQL Server 對於 Always On 可用性群組的支援相關詳細資訊,請參閱 OLE DB Driver for SQL Server 高可用性和災害復原支援。 |
Network Address | SSPROP_INIT_NETWORKADDRESS | 組織中 SQL Server 執行個體的網路位址。 如需有關有效位址語法的詳細資訊,請參閱本文中對於 Address 關鍵字的說明。 |
Network Library | SSPROP_INIT_NETWORKLIBRARY | 用來建立組織中 SQL Server 執行個體連線的網路程式庫。 |
封包大小 | SSPROP_INIT_PACKETSIZE | 表格式資料流 (TDS) 封包大小。 預設值為 0 (實際值將由伺服器決定)。 |
密碼 | DBPROP_AUTH_PASSWORD | SQL Server 登入密碼。 |
保存安全性資訊 | DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO | 接受以 true 和 false 作為值的字串。 當為 false 時,不允許使用資料來源物件來保存敏感性驗證資訊 |
提供者 | 對於 OLE DB Driver for SQL Server,這個值應該是 "MSOLEDBSQL19" 或 "MSOLEDBSQL"。 | |
伺服器憑證 | SSPROP_INIT_SERVER_CERTIFICATE | 指定要與 SQL Server TLS/SSL 憑證相符的憑證檔案所在的路徑。 只有在啟用 Strict 加密時,才能使用此選項。 接受的憑證格式為 PEM、DER 和 CER。 如有指定,則會查看提供的憑證是否完全相符,藉此檢查 SQL Server 憑證。 |
Server SPN | SSPROP_INIT_SERVERSPN | 伺服器的 SPN。 預設值為空字串。 空字串會讓 OLE DB Driver for SQL Server 使用提供者產生的預設 SPN。 |
TransparentNetworkIPResolution | SSPROP_INIT_TNIR | 在第一個解析的主機名稱 IP 沒有回應,且該主機名稱有多個相關聯的 IP 時影響連線順序。 TNIR 會與 MultiSubnetFailover 互動,以提供不同的連線順序。 可能的值是 True 和 False 。 預設值是 True 。 如需詳細資訊,請參閱使用透明網路 IP 解析。 |
信任伺服器憑證1 | SSPROP_INIT_TRUST_SERVER_CERTIFICATE | 接受以 true 和 false 作為值的字串。 預設為 false ,這表示將會驗證伺服器憑證。 |
為資料使用加密1 | SSPROP_INIT_ENCRYPT | 指定當透過網路傳送資料以前,是否應該先加密資料。 可能的值是 Optional 、Mandatory 、Strict 。 預設值是 Mandatory 。 若為 18.x.x 版,請參閱 MSOLEDBSQL 主要版本差異。 |
Use FMTONLY | SSPROP_INIT_USEFMTONLY | 控制連線到 SQL Server 2012 (11.x) 及更新版本時,擷取中繼資料的方式。 可能的值是 true 和 false 。 預設值是 false 。根據預設,OLE DB Driver for SQL Server 會使用 sp_describe_first_result_set 和 sp_describe_undeclared_parameters 預存程序擷取中繼資料。 這些預存程序有一些限制 (例如,在暫存資料表上操作時,這些預存程序會失敗)。 將 Use FMTONLY 設定為 true ,會指示驅動程式改為使用 SET FMTONLY 進行中繼資料擷取。 |
使用者識別碼 | DBPROP_AUTH_USERID | SQL Server 登入名稱。 |
Workstation ID | SSPROP_INIT_WSID | 工作站識別碼。 |
[1]:若要提升安全性,使用驗證/存取權杖初始化屬性或其對應的連接字串關鍵字時,會修改加密和憑證驗證行為。 如需詳細資訊,請參閱加密和憑證驗證。
注意
在此連接字串中,Old Password
屬性會設定 SSPROP_AUTH_OLD_PASSWORD,這是無法透過提供者字串屬性取得的目前密碼 (可能已過期)。
ActiveX Data Objects (ADO) 連接字串關鍵字
ADO 應用程式會設定 ADODBConnection 物件的 ConnectionString 屬性,或是提供連接字串當做 ADODBConnection 物件之 Open 方法的參數。
ADO 應用程式也可以使用 OLE DB IDBInitialize::Initialize 方法所使用的關鍵字,但是只適用於沒有預設值的屬性。 如果應用程式在初始化字串中同時使用 ADO 關鍵字和 IDBInitialize::Initialize 關鍵字,將會使用 ADO 關鍵字設定。 建議您僅讓應用程式使用 ADO 連接字串關鍵字。
ADO 使用的連接字串具有以下語法:
connection-string ::= empty-string[;] | attribute[;] | attribute; connection-string
empty-string ::=
attribute ::= attribute-keyword=["]attribute-value["]
attribute-value ::= character-string
attribute-keyword ::= identifier
可以選擇用雙引號括住屬性值,這樣是很好的做法。 此做法在值包含非英數字元時,可避免問題發生。 屬性值不能包含雙引號。
下表描述可搭配 ADO 連接字串使用的關鍵字:
關鍵字 | 初始化屬性 | 描述 |
---|---|---|
存取權杖1 | SSPROP_AUTH_ACCESS_TOKEN | 用來向 Microsoft Entra ID 進行驗證的存取權杖。 注意: 指定此關鍵字並同時指定 UID 、PWD 、Trusted_Connection 或 Authentication 連接字串關鍵字或其對應的屬性/關鍵字是錯誤。 |
Application Intent | SSPROP_INIT_APPLICATIONINTENT | 宣告連接到伺服器時的應用程式工作負載類型。 可能的值是 ReadOnly 和 ReadWrite 。預設值為 ReadWrite 。 如需 OLE DB Driver for SQL Server 對於 Always On 可用性群組的支援相關詳細資訊,請參閱 OLE DB Driver for SQL Server 高可用性和災害復原支援。 |
應用程式名稱 | SSPROP_INIT_APPNAME | 識別應用程式的字串。 |
Authentication1 | SSPROP_AUTH_MODE | 指定所使用的 SQL 或 Microsoft Entra 驗證。 有效值為:
注意: ActiveDirectoryIntegrated 關鍵字也可用於向 SQL Server 進行的 Windows 驗證。 該關鍵字會取代 Integrated Security (或 Trusted_Connection ) 驗證關鍵字。 建議使用 Integrated Security (或 Trusted_Connection ) 關鍵字或其對應屬性的應用程式將 Authentication 關鍵字 (或其對應的屬性) 的值設定為 ActiveDirectoryIntegrated ,以啟用新的加密和憑證驗證行為。注意:建議使用 SQL Server 驗證的應用程式將 Authentication 關鍵字 (或其對應的屬性) 的值設定為 SqlPassword ,以啟用新的加密和憑證驗證行為。 |
自動轉譯 | SSPROP_INIT_AUTOTRANSLATE | 設定 OEM/ANSI 字元轉譯。 可辨識的值為 true 和 false 。 |
連接逾時 | DBPROP_INIT_TIMEOUT | 等候資料來源初始化完成的時間量 (以秒為單位)。 |
連線重試計數 | SSPROP_INIT_CONNECT_RETRY_COUNT | 控制連線遺失的情況下,重新連線嘗試次數。 有效值的範圍為 0 到 255 。 預設值是 1 。 值為 0 會造成不嘗試重新連線。 如需詳細資訊,請參閱閒置連線復原。 |
連線重試間隔 | SSPROP_INIT_CONNECT_RETRY_INTERVAL | 若連線遺失,會指定每個連接重試嘗試的間隔秒數。 有效值的範圍為 1 到 60 。 預設值是 10 。 如需詳細資訊,請參閱閒置連線復原。 |
Current Language | SSPROPT_INIT_CURRENTLANGUAGE | SQL Server 語言名稱。 |
資料來源 | DBPROP_INIT_DATASOURCE | 組織中 SQL Server 執行個體的名稱。 如果沒有指定,就會連接至本機電腦上的預設執行個體。 如需有關有效位址語法的詳細資訊,請參閱本文中對於 Server 關鍵字的說明。 |
DataTypeCompatibility | SSPROP_INIT_DATATYPECOMPATIBILITY | 指定即將使用之資料類型處理的模式。 提供者資料類型和 SQL Server 2000 資料類型的可辨識值分別為 0 和 80 。 |
Failover Partner | SSPROP_INIT_FAILOVERPARTNER | 用於資料庫鏡像的容錯移轉伺服器名稱。 |
Failover Partner SPN | SSPROP_INIT_FAILOVERPARTNERSPN | 容錯移轉夥伴的 SPN。 預設值為空字串。 空字串會讓 OLE DB Driver for SQL Server 使用提供者產生的預設 SPN。 |
憑證中的主機名稱 | SSPROP_INIT_HOST_NAME_CERTIFICATE | 用於驗證 SQL Server TLS/SSL 憑證的主機名稱。 如果未設定 Host Name In Certificate 關鍵字,驅動程式就會使用連線 URL 上的 Data Source 關鍵字值做為主機名稱,以驗證 SQL Server TLS/SSL 憑證。 注意:如果伺服器憑證受信任,則會忽略這個屬性。 如果 [對資料使用加密] 設定為 Strict ,則一律會驗證憑證。 |
初始目錄 | DBPROP_INIT_CATALOG | 資料庫名稱。 |
初始檔案名稱 | SSPROP_INIT_FILENAME | 可附加資料庫的主要檔案名稱,包括完整路徑名稱。 若要使用 AttachDBFileName,您還必須使用提供者字串 DATABASE 關鍵字來指定資料庫名稱。 如果之前已附加資料庫,則 SQL Server 不會重新附加該資料庫 (此產品會使用附加的資料庫作為連線的預設)。 |
整合式安全性 | DBPROP_AUTH_INTEGRATED | 接受 SSPI 值進行 Windows 驗證。 |
MARS Connection | SSPROP_INIT_MARSCONNECTION | 當伺服器為 SQL Server 2005 (9.x) 或更新版本時,啟用或停用連接上的 Multiple Active Result Sets (MARS)。 可辨識的值為 true 和 false 。 預設值為 false 。 |
MultiSubnetFailover | SSPROP_INIT_MULTISUBNETFAILOVER | 在連線到 SQL Server 可用性群組的可用性群組接聽程式或 SQL Server 容錯移轉叢集執行個體時,一律指定 MultiSubnetFailover=True。 MultiSubnetFailover=True 會設定 OLE DB Driver for SQL Server ,以提供對 (目前) 使用中伺服器更快速的偵測與連線。 可能的值是 True 和 False 。 預設值為 False 。 例如:MultiSubnetFailover=True 如需 OLE DB Driver for SQL Server 對於 Always On 可用性群組的支援相關詳細資訊,請參閱 OLE DB Driver for SQL Server 高可用性和災害復原支援。 |
Network Address | SSPROP_INIT_NETWORKADDRESS | 組織中 SQL Server 執行個體的網路位址。 如需有關有效位址語法的詳細資訊,請參閱本文中對於 Address 關鍵字的說明。 |
Network Library | SSPROP_INIT_NETWORKLIBRARY | 用來建立組織中 SQL Server 執行個體連線的網路程式庫。 |
封包大小 | SSPROP_INIT_PACKETSIZE | 表格式資料流 (TDS) 封包大小。 預設值為 0 (實際值將由伺服器決定)。 |
密碼 | DBPROP_AUTH_PASSWORD | SQL Server 登入密碼。 |
保存安全性資訊 | DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO | 接受以 true 和 false 作為值的字串。 當為 false 時,不允許使用資料來源物件來保存敏感性驗證資訊。 |
提供者 | 針對 OLE DB Driver for SQL Server,此值為 MSOLEDBSQL19 或 MSOLEDBSQL 。 |
|
伺服器憑證 | SSPROP_INIT_SERVER_CERTIFICATE | 指定要與 SQL Server TLS/SSL 憑證相符的憑證檔案所在的路徑。 只有在啟用 Strict 加密時,才能使用此選項。 接受的憑證格式為 PEM、DER 和 CER。 如有指定,則會查看提供的憑證是否完全相符,藉此檢查 SQL Server 憑證。 |
Server SPN | SSPROP_INIT_SERVERSPN | 伺服器的 SPN。 預設值為空字串。 空字串會讓 OLE DB Driver for SQL Server 使用提供者產生的預設 SPN。 |
TransparentNetworkIPResolution | SSPROP_INIT_TNIR | 在第一個解析的主機名稱 IP 沒有回應,且該主機名稱有多個相關聯的 IP 時影響連線順序。 TNIR 會與 MultiSubnetFailover 互動,以提供不同的連線順序。 可能的值是 True 和 False 。 預設值是 True 。 如需詳細資訊,請參閱使用透明網路 IP 解析。 |
信任伺服器憑證1 | SSPROP_INIT_TRUST_SERVER_CERTIFICATE | 接受以 true 和 false 作為值的字串。 預設為 false ,這表示將會驗證伺服器憑證。 |
為資料使用加密1 | SSPROP_INIT_ENCRYPT | 指定當透過網路傳送資料以前,是否應該先加密資料。 可能的值是 Optional 、Mandatory 、Strict 。 預設值是 Mandatory 。 若為 18.x.x 版,請參閱 MSOLEDBSQL 主要版本差異。 |
Use FMTONLY | SSPROP_INIT_USEFMTONLY | 控制連線到 SQL Server 2012 (11.x) 及更新版本時,擷取中繼資料的方式。 可能的值是 true 和 false 。 預設值是 false 。根據預設,OLE DB Driver for SQL Server 會使用 sp_describe_first_result_set 和 sp_describe_undeclared_parameters 預存程序擷取中繼資料。 這些預存程序有一些限制 (例如,在暫存資料表上操作時,這些預存程序會失敗)。 將 Use FMTONLY 設定為 true ,會指示驅動程式改為使用 SET FMTONLY 進行中繼資料擷取。 |
使用者識別碼 | DBPROP_AUTH_USERID | SQL Server 登入名稱。 |
Workstation ID | SSPROP_INIT_WSID | 工作站識別碼。 |
[1]:若要提升安全性,使用驗證/存取權杖初始化屬性或其對應的連接字串關鍵字時,會修改加密和憑證驗證行為。 如需詳細資訊,請參閱加密和憑證驗證。
注意
在此連接字串中,"Old Password" 屬性會設定 SSPROP_AUTH_OLD_PASSWORD,這是無法透過提供者字串屬性取得的目前 (可能已過期) 密碼。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應