ConnectionString 類似於 OLE DB 連接字符串,但並不相同。與 OLE DB 或 ADO 不同,如果“Persist Security Info”值設置為 false(默認值),則返回的連接字符串與用戶設置的 ConnectionString 相同但去除了安全信息。除非將“Persist Security Info”設置為 true,否則,SQL Server .NET Framework 數據提供程序將不會保持,也不會返回連接字符串中的密碼。
可以使用 ConnectionString 屬性連接到數據庫。下面的示例闡釋了一個典型的連接字符串。
使用新的 SqlConnectionStringBuilder 在運行時構造有效的連接字符串。有關更多信息,請參見 Building Connection Strings。
只有在連接關閉時才能設置 ConnectionString 屬性。許多連接字符串值都具有相應的只讀屬性。當設置連接字符串時,將更新這些屬性(除非檢測到錯誤)。在此情況下,不會更新任何屬性。SqlConnection 屬性只返回那些包含在 ConnectionString 中的設置。
若要連接到本地計算機,請將服務器指定為“(本地)”。(必須始終指定一個服務器。)
重置已關閉連接上的 ConnectionString 會重置包括密碼在內的所有連接字符串值(和相關屬性)。例如,如果設置一個連接字符串,其中包含“Database= AdventureWorks”,然后再將該連接字符串重置為“Data Source=myserver;Integrated Security=SSPI”,則 Database 屬性將不再設置為“AdventureWorks”。
在設置后會立即分析連接字符串。如果在分析時發現語法中有錯誤,則產生運行庫異常,如 ArgumentException。只有當試圖打開連接時,才會發現其他錯誤。
連接字符串的基本格式包括一系列由分號分隔的關鍵字/值對。等號 (= ) 連接各個關鍵字及其值。若要包括含有分號、單引號字符或雙引號字符的值,則該值必須用雙引號括起來。如果該值同時包含分號和雙引號字符,則該值可以用單引號括起來。如果該值以雙引號字符開始,則也可以使用單引號。相反,如果該值以單引號開始,也可以使用雙引號。如果該值同時包含單引號和雙引號字符,則用於將該值括起來的引號字符每次出現時,都必須成對出現。
若要在字符串值中包括前導或尾隨空格,則該值必須用單引號或雙引號括起來。即使將整數、布爾值或枚舉值用引號括起來,其周圍的任何前導或尾隨空格也將被忽略。然而,保留字符串關鍵字或值內的空格。使用 .NET Framework 1.1 版或更高版本時,在連接字符串中可以使用單引號或雙引號,而不用使用分隔符(例如,Data Source= my'Server 或 Data Source= my"Server),但引號字符不可以為值的第一個或最后一個字符。
若要在關鍵字或值中包括等號 (=),則它之前必須還有另一個等號。例如,在假設的連接字符串中,
關鍵字是“key=word”並且值是“value”。
如果關鍵字/值對中的一個特定關鍵字多次出現在連接字符串中,則將所列出的最后一個用於值集。
關鍵字不區分大小寫。
下表列出了 ConnectionString 中的關鍵字值的有效名稱。
| 關鍵字 |
默認值 |
說明 |
|
|---|---|---|---|
| Application Name |
N/A |
應用程序的名稱,或者“.Net SqlClient Data Provider”(如果不提供應用程序名稱)。 |
|
| Asynch |
'false' |
如果設置為 true,則啟用異步操作支持。可識別的值為 true、false、yes 和 no。 |
|
| AttachDBFilename - 或 - extended properties - 或 - Initial File Name |
N/A |
主數據庫文件的名稱,包括可連接數據庫的完整路徑名。該路經可以是絕對路徑,也可以是相對路徑,這取決於是否使用 DataDirectory 替換字符串。如果使用 DataDirectory,則對應的數據庫文件必須存在於替換字符串指向的目錄的子目錄中。
必須按照如下方式使用關鍵字“database”(或其別名之一)指定數據庫名稱: "AttachDbFileName=|DataDirectory|\data\YourDB.mdf;integrated security=true;database=YourDatabase" |
|
| Connect Timeout - 或 - Connection Timeout |
15 |
在終止嘗試並產生錯誤之前,等待與服務器的連接的時間長度(以秒為單位)。 |
|
| Context Connection |
'false' |
如果應對 SQL Server 進行進程內連接,則為 true。 |
|
| Current Language |
N/A |
SQL Server 語言記錄名稱。 |
|
| Data Source - 或 - Server - 或 - Address - 或 - Addr - 或 - Network Address |
N/A |
要連接的 SQL Server 實例的名稱或網絡地址。可以在服務器名稱之后指定端口號: server=tcp:servername, portnumber 指定本地實例時,始終使用 (local)。若要強制使用某個協議,請添加下列前綴之一: np:(local), tcp:(local), lpc:(local) |
|
| Encrypt |
'false' |
當該值為 true 時,如果服務器端安裝了證書,則 SQL Server 將對所有在客戶端和服務器之間傳送的數據使用 SSL 加密。可識別的值為 true、false、yes 和 no。 |
|
| Enlist |
'false' |
true 表明 SQL Server 連接池程序在創建線程的當前事務上下文中自動登記連接。 |
|
| Failover Partner |
N/A |
在其中配置數據庫鏡像的故障轉移合作伙伴服務器的名稱。 .NET Framework 1.0 或 1.1 版不支持 Failover Partner 關鍵字。 |
|
| Initial Catalog - 或 - Database |
N/A |
數據庫的名稱。 |
|
| Integrated Security - 或 - Trusted_Connection |
'false' |
當為 false 時,將在連接中指定用戶 ID 和密碼。當為 true 時,將使用當前的 Windows 帳戶憑據進行身份驗證。 可識別的值為 true、false、yes、no 以及與 true 等效的 sspi(強烈推薦)。 |
|
| MultipleActiveResultSets |
'true' |
如果為 true,則應用程序可以維護多活動結果集 (MARS)。如果為 false,則應用程序必須在執行該連接上的任何其他批處理之前處理或取消一個批處理中的多個結果集。 可識別的值為 true 和 false。 .NET Framework 1.0 或 1.1 版不支持該關鍵字。 |
|
| Network Library - 或 - Net |
'dbmssocn' |
用於建立與 SQL Server 實例的連接的網絡庫。支持的值包括 dbnmpntw(命名管道)、dbmsrpcn(多協議)、dbmsadsn (Apple Talk)、dbmsgnet (VIA)、dbmslpcn(共享內存)及 dbmsspxn (IPX/SPX) 和 dbmssocn (TCP/IP)。 相應的網絡 DLL 必須安裝在要連接的系統上。如果不指定網絡而使用一個本地服務器(比如“.”或“(local)”),則使用共享內存。 |
|
| Packet Size |
8192 |
用來與 SQL Server 的實例進行通信的網絡數據包的大小,以字節為單位。 |
|
| Password - 或 - Pwd |
N/A |
SQL Server 帳戶登錄的密碼。建議不要使用。為保持高安全級別,我們強烈建議您使用 Integrated Security 或 Trusted_Connection 關鍵字。 |
|
| Persist Security Info |
'false' |
當該值設置為 false 或 no(強烈推薦)時,如果連接是打開的或者一直處於打開狀態,那么安全敏感信息(如密碼)將不會作為連接的一部分返回。重置連接字符串將重置包括密碼在內的所有連接字符串值。可識別的值為 true、false、yes 和 no。 |
|
| Replication |
'false' |
如果使用連接來支持復制,則為 true。 |
|
| TrustServerCertificate |
'false' |
如果設置為 true,則使用 SSL 對通道進行加密,但不通過證書鏈對可信度進行驗證。如果將 TrustServerCertificate 設置為 true 並將 Encrypt 設置為 false,則不對通道進行加密。可識別的值為 true、false、yes 和 no。有關更多信息,請參見 SQL Server 2005 Books Online(《SQL Server 2005 聯機叢書》)中的“Encryption Hierarchy”(加密層次結構)和“Using Encryption Without Validation”(使用不驗證的加密)。 |
|
| Type System Version |
N/A |
指示應用程序期望的類型系統的字符串值。可能的值有: Type System Version=SQL Server 2000; Type System Version=SQL Server 2005; Type System Version=Latest; 如果設置為 SQL Server 2000,將使用 SQL Server 2000 類型系統。與 SQL Server 2005 實例連接時,執行下列轉換: XML 到 NTEXT UDT 到 VARBINARY VARCHAR(MAX)、NVARCHAR(MAX) 和 VARBINARY(MAX) 分別到 TEXT、NEXT 和 IMAGE。 如果設置為 SQL Server 2005,將使用 SQL Server 2005 類型系統。對 ADO.NET 的當前版本不進行任何轉換。 如果設置為 Latest,將使用此客戶端-服務器對無法處理的最新版本。這個最新版本將隨着客戶端和服務器組件的升級自動更新。 |
|
| User ID |
N/A |
SQL Server 登錄帳戶。建議不要使用。為保持高安全級別,我們強烈建議您使用 Integrated Security 或 Trusted_Connection 關鍵字。 |
|
| User Instance |
'false' |
一個值,用於指示是否將連接從默認的 SQL Server 速成版實例重定向到調用方帳戶下運行的運行時啟動的實例。 |
|
| Workstation ID |
本地計算機名稱 |
連接到 SQL Server 的工作站的名稱。 |
