每個 ADO.NET 資料提供者都有一個Connection物件,該物件繼承自 DbConnection,並且具有提供者特有的 ConnectionString 屬性。 每個提供者的特定連接字串語法會記錄在其 ConnectionString 屬性中。 下表列出了 Microsoft。Data.SqlClient 以及 .NET Framework 中包含的三個提供者。
| 資料提供者 | 描述 |
|---|---|
| Microsoft.Data.SqlClient | 透過 Microsoft.Data.SqlClient NuGet 套件 提供 Microsoft SQL Server 的資料存取。 如需連接字串語法的詳細資訊,請參閱 ConnectionString。 |
| System.Data.OleDb | 為使用 OLE DB 所公開的資料來源提供資料存取。 如需連接字串語法的詳細資訊,請參閱 ConnectionString。 |
| System.Data.Odbc | 為使用 ODBC 所公開的資料來源提供資料存取。 如需連接字串語法的詳細資訊,請參閱 ConnectionString。 |
| System.Data.OracleClient | 提供 Oracle 8.1.7 (含) 以後版本的資料存取。 如需連接字串語法的詳細資訊,請參閱 ConnectionString。 |
連接字符串生成器
使用你的資料提供者的 連接字串 建構器。
- SqlConnectionStringBuilder
- OleDbConnectionStringBuilder
- OdbcConnectionStringBuilder
- OracleConnectionStringBuilder
連接字串建構器允許你在執行時建構語法有效的連接字串,因此不必手動在程式碼中串接連接字串值。 如需詳細資訊,請參閱連接字串建置器。
Windows 驗證
Windows 驗證 (有時也稱為「整合式安全性」) 可用來連接支援此驗證方法的資料來源。 連接字串所使用的語法隨提供者而異。 下表顯示這些資料提供者所使用的 Windows 認證語法。
| 提供者 | 語法 |
|---|---|
SqlClient |
Integrated Security=true;-- or --Integrated Security=SSPI; |
OleDb |
Integrated Security=SSPI; |
Odbc |
Trusted_Connection=yes; |
OracleClient |
Integrated Security=yes; |
注意
與 Integrated Security=true 提供者搭配使用時,OleDb 會擲回例外狀況。
重要
Microsoft建議您使用可用的最安全驗證流程。 如果您正在連接 Azure SQL,建議使用的驗證方法為 Azure 資源受控識別。
SqlClient 連接字串
SqlConnection 連接字串的語法列於 SqlConnection.ConnectionString 屬性中。 您可以使用 ConnectionString 屬性來取得或設定 SQL Server 資料庫的連接字串。 大多數的連接字串關鍵字也可對應至 SqlConnectionStringBuilder 中的屬性。
重要
Persist Security Info 關鍵字的預設設定為 false。 如果將其設為 true 或 yes,則在開啟連接後,可透過連接獲得機密資訊,包含使用者 ID 和密碼。 將 Persist Security Info 保持設定為 false,可確保未受信任的來源不能存取敏感性連接字串資訊。
使用 SqlClient 進行 Windows 驗證
以下每種語法形式皆使用 Windows 驗證來連接到指定伺服器上的 AdventureWorks 資料庫。
"Persist Security Info=False;Integrated Security=true;Initial Catalog=AdventureWorks;Server=<server>;Encrypt=true"
"Persist Security Info=False;Integrated Security=SSPI;database=AdventureWorks;server=<server>;Encrypt=true"
"Persist Security Info=False;Trusted_Connection=True;database=AdventureWorks;server=<server>;Encrypt=true"
重要
Microsoft建議您使用可用的最安全驗證流程。 如果您正在連接 Azure SQL,建議使用的驗證方法為 Azure 資源受控識別。
使用 SqlClient 進行 SQL Server 驗證
連接至 SQL Server 時慣用「Windows 驗證」(內部部署)。 不過,如果需要「SQL Server 驗證」,請使用下列語法來指定使用者名稱和密碼。 在這個範例中使用了星號來表示有效的使用者名稱和密碼。
"Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer"
當您連線到 Azure SQL Database 或 Azure SQL 資料倉儲,並以 user@servername 格式提供登入時,請確定登入中的 servername 值符合提供給 Server= 的值。
注意
Windows 驗證的優先順序高於 SQL Server 登入。 如果您同時指定 Integrated Security=true 以及使用者名稱和密碼,則將忽略使用者名稱和密碼並使用 Windows 驗證。
重要
Microsoft建議您使用可用的最安全驗證流程。 如果您正在連接 Azure SQL,建議使用的驗證方法為 Azure 資源受控識別。
連線到 SQL Server 的具名執行個體
若要連線到 SQL Server 的具名執行個體,請使用「伺服器名稱\執行個體名稱」語法。
"Data Source=<server>\\<instance>;Encrypt=true;"
您也可以在建立連接字串時,將 DataSource 的 SqlConnectionStringBuilder 屬性設定為執行個體名稱。
DataSource 物件的 SqlConnection 屬性是唯讀的。
型別系統版本變更
Type System Version 中的 SqlConnection.ConnectionString 關鍵字會指定 SQL Server 類型的用戶端表示法。 如需 Type System Version 關鍵字的詳細資訊,請參閱 SqlConnection.ConnectionString。
連線並附加至 SQL Server Express 使用者執行個體
使用者執行個體是 SQL Server Express 的一項功能。 在最低權限的本機 Windows 帳戶上運行的使用者,可以在不需要系統管理員權限的情況下附加和執行 SQL Server 資料庫。 使用者執行個體會使用使用者的 Windows 認證執行,而不是以服務方式執行。
如需利用使用者執行個體的詳細資訊,請參閱 SQL Server Express 使用者執行個體。
使用 TrustServerCertificate
使用 Encrypt=true 時,TrustServerCertificate=true 會加密連線,但會略過伺服器憑證驗證。 保留 TrustServerCertificate=false 供生產連線使用,並設定可驗證的伺服器憑證。
"TrustServerCertificate=true;"
Caution
如果你繞過憑證驗證,客戶端就無法驗證伺服器的身份。 使用 Encrypt=Strict 時,Microsoft.Data.SqlClient 總是會驗證伺服器憑證並忽略 TrustServerCertificate。
啟用加密
Microsoft.Data.SqlClient 預設為 Encrypt=Mandatory,相當於 Encrypt=true 和 TrustServerCertificate=false。 用戶端需要加密並驗證伺服器憑證。 如果憑證不被信任或與伺服器名稱不符,連線就會失敗。
對於遠端連線,請指定 Encrypt=true 並設定一個客戶端信任的伺服器憑證。 如果你是從 System.Data.SqlClient 遷移過來,不要以為它的加密預設會適用於 Microsoft.Data.SqlClient。 如需詳細資訊,請參閱 Microsoft.Data.SqlClient中的加密和憑證驗證。
OleDb 連接字串
ConnectionString 的 OleDbConnection 屬性可讓您取得或設定 OLE DB 資料來源 (例如 Microsoft Access) 的連接字串。 你也可以在執行時用這個OleDb類別建立OleDbConnectionStringBuilder連接字串。
OleDb 連接字串語法
您必須指定 OleDbConnection 連接字串的提供者名稱。 下列連接字串會使用 Jet 提供者連接至 Microsoft Access 資料庫。 請注意,如果資料庫未受保護 (預設值),則 User ID 及 Password 關鍵字是選擇性項目。
Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:\Northwind.mdb;User ID=Admin;Password=;
如果您使用使用者層級安全性保護 Jet 資料庫的安全,則必須提供工作群組資訊檔 (.mdw) 的位置。 工作群組資訊檔是用於驗證連接字串中提供的認證。
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\Northwind.mdb;Jet OLEDB:System Database=d:\NorthwindSystem.mdw;User ID=*****;Password=*****;
重要
可以在通用資料連結(UDL)檔案中為OleDbConnection提供連線資訊,但應避免這麼做。 UDL 檔並未加密,並且會以純文字的格式公開連接字串資訊。 因為對您的應用程式而言,UDL 檔是外部的檔案型資源,所以您無法使用 .NET Framework 來保護該檔案。
SqlClient 不支援 UDL 檔案。
重要
Microsoft建議您使用可用的最安全驗證流程。 如果您正在連接 Azure SQL,建議使用的驗證方法為 Azure 資源受控識別。
使用 DataDirectory 連接 Access/Jet
DataDirectory 並不是由 SqlClient 所獨佔, 也可以搭配 System.Data.OleDb 和 System.Data.Odbc .NET 資料提供者使用。 下列範例 OleDbConnection 字串展示了連接至應用程式 app_data 資料夾內的 Northwind.mdb 所需的語法。 系統資料庫 (System.mdw) 也是儲存於該位置。
"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=|DataDirectory|\Northwind.mdb;
Jet OLEDB:System Database=|DataDirectory|\System.mdw;"
重要
如果 Access/Jet 資料庫未受保護,則不需要在連接字串中指定系統資料庫的位置。 安全性預設為關閉,所有使用者連接時都是以空白密碼的內建管理者使用者身份進行連接。 即使已正確地實作使用者層級的安全性,Jet 資料庫仍很容易受到攻擊。 因此,不建議在 Access/Jet 資料庫中儲存機密資訊,因為其檔案架構的安全性配置原本就有弱點。
連接至 Excel
Microsoft Jet 提供者可用於連接至 Excel 活頁簿。 在下列連接字串中,由 Extended Properties 關鍵字設定 Excel 特定的屬性。 "HDR=Yes;" 表示第一個資料列包含資料行名稱,而非資料;"IMEX=1;" 表示驅動程式會將「混合」資料行一律讀取為文字。
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""
請注意,Extended Properties 所需的雙引號字元還必須以雙引號括住。
Data Shape 提供者連接字串語法
使用 Microsoft Data Shape 提供者時,使用 Provider 及 Data Provider 這兩個關鍵字。 下列範例使用 Shape 提供者連接至 SQL Server 的本機執行個體。
"Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=(local);Initial Catalog=pubs;Integrated Security=SSPI;"
重要
Microsoft建議您使用可用的最安全驗證流程。 如果您正在連接 Azure SQL,建議使用的驗證方法為 Azure 資源受控識別。
Odbc 連接字串
ConnectionString 的 OdbcConnection 屬性可讓您取得或設定 OLE DB 資料來源的連接字串。 Odbc 連接字串也受到 OdbcConnectionStringBuilder 的支援。
下列連接字串使用 Microsoft Text Driver。
Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:\bin
Oracle 連接字串
ConnectionString 的 OracleConnection 屬性可讓您取得或設定 OLE DB 資料來源的連接字串。 Oracle 連接字串也受到 OracleConnectionStringBuilder 的支援。
Data Source=Oracle9i;User ID=*****;Password=*****;
如需 ODBC 連接字串語法的詳細資訊,請參閱 ConnectionString。
重要
Microsoft建議您使用可用的最安全驗證流程。 如果您正在連接 Azure SQL,建議使用的驗證方法為 Azure 資源受控識別。