共用方式為


連接字串語法 (ADO.NET)

更新: November 2007

每個 .NET Framework 資料提供者都擁有一個 Connection 物件,繼承自 DbConnection 以及提供者特定的 ConnectionString 屬性。每個提供者的特定連接字串語法會記錄在其 ConnectionString 屬性中。下表列出 .NET Framework 中包含的四個資料提供者。

.NET Framework 資料提供者

描述

System.Data.SqlClient

提供 Microsoft SQL Server 7.0 (含) 以後版本的資料存取。如需連接字串語法的詳細資訊,請參閱 ConnectionString

System.Data.OleDb

為使用 OLE DB 所公開的資料來源提供資料存取。如需連接字串語法的詳細資訊,請參閱 ConnectionString

System.Data.Odbc

為使用 ODBC 所公開的資料來源提供資料存取。如需連接字串語法的詳細資訊,請參閱 ConnectionString

System.Data.OracleClient

提供 Oracle 8.1.7 (含) 以後版本的資料存取。如需連接字串語法的詳細資訊,請參閱 ConnectionString

連接字串產生器

ADO.NET 2.0 針對 .NET Framework 資料提供者導入了下列連接字串產生器 (Builder)。

連接字串產生器可讓您在執行階段建構語法有效的連接字串,所以您不需要在程式碼中手動串連連接字串值。如需詳細資訊,請參閱連接字串產生器 (ADO.NET)

Windows 驗證

建議您使用「Windows 驗證」(有時也稱為「整合式安全性」) 連接至支援此驗證方法的資料來源。連接字串所使用的語法隨提供者而異。下列表格說明搭配 .NET Framework 資料提供者使用的「Windows 驗證」語法。

提供者

語法

SqlClient

Integrated Security=true;

-- or --

Integrated Security=SSPI;

OleDb

Integrated Security=SSPI;

Odbc

Trusted_Connection=yes;

OracleClient

Integrated Security=yes;

注意事項:

與 OleDb 提供者搭配使用時,Integrated Security=true 會擲回例外狀況 (Exception)。

SqlClient 連接字串

SqlConnection 連接字串的語法列於 ConnectionString 屬性中。您可以使用 ConnectionString 屬性來取得或設定 SQL Server 7.0 或更新版本資料庫的連接字串。如果您需要連接至舊版的 SQL Server,則必須使用 .NET Framework Data Provider for OleDb (System.Data.OleDb)。大多數的連接字串關鍵字也可對應至 SqlConnectionStringBuilder 中的屬性。

下列每種形式的語法都會使用「Windows 驗證」來連接至本機伺服器上的 AdventureWorks 資料庫。

"Persist Security Info=False;Integrated Security=true;
    Initial Catalog=AdventureWorks;Server=MSSQL1"
"Persist Security Info=False;Integrated Security=SSPI;
    database=AdventureWorks;server=(local)"
"Persist Security Info=False;Trusted_Connection=True;
    database=AdventureWorks;server=(local)"

SQL Server 登入

連接至 SQL Server 時慣用「Windows 驗證」。不過,如果需要「SQL Server 驗證」,請使用下列語法來指定使用者名稱和密碼。在這個範例中使用了星號來表示有效的使用者名稱和密碼。

"Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer"
安全性注意事項:

PersistSecurity Info 關鍵字的預設設定為 false。如果將其設為 true 或 yes,則在開啟連接後,可透過連接獲得機密資訊,包含使用者 ID 和密碼。將 PersistSecurity Info 保持設定為 false 可確保未受信任的來源不能存取機密的連接字串資訊。

若要連接至 SQL Server 的具名執行個體 (Instance),請使用 server name\instance name 語法。

Data Source=MySqlServer\MSSQL1;"

您也可以在建立連接字串時,將 SqlConnectionStringBuilder 的 DataSource 屬性設定為執行個體名稱。SqlConnection 物件的 DataSource 屬性是唯讀的。

型別系統版本變更

可供用戶端應用程式使用的功能是根據 SQL Server 版本以及資料庫的相容性層級而定。SqlConnection.ConnectionString 中的 Type System Version 關鍵字可用於指定 SQL Server 型別的用戶端表示。如果使用了不同的 SQL Server 版本,則明確設定撰寫用戶端應用程式的目標型別系統版本可避免可能導致應用程式中斷的潛在問題。例如,如果指定的是 SQL Server 2000,則 UDT 資料行會表示為 byte[] 陣列。如果指定的是 SQL Server 2005,則會表示為 Managed 型別。

下表說明可用的 Type System Version 值。

描述

最新的

使用這個用戶端伺服器組合所能處理的最新版本。使用的版本將在用戶端及伺服器元件升級時自動向上升級。此為 ADO.NET 中的預設值。

SQL Server 2000

使用 SQL Server 2000 型別系統。

SQL Server 2005

使用 SQL Server 2005 型別系統。

SQL Server 2008

使用 SQL Server 2008 型別系統。Datetime 值會根據伺服器上指定的型別系統版本及預設語言進行處理。

若要與 SQL Server 2008 中引進的功能相容,可以使用下列其中一個項目在連接字串中明確地提供 Type System Version。

Type System Version= SQL Server 2008;
Type System Version=Latest;
注意事項:

無法針對 SQL Server 中同處理序 (In-Process) 執行的 Common Language Runtime (CLR) 程式碼設定型別系統版本。如需詳細資訊,請參閱 SQL Server Common Language Runtime 整合 (ADO.NET)

連接和附加至 SQL Server Express 使用者執行個體

使用者執行個體是僅在 SQL Server 2005 Express Edition 中提供的新功能。透過使用者執行個體,在最低權限的本機 Windows 帳戶上執行的使用者不需要系統管理員權限,即可附加及執行 SQL Server 資料庫。使用者執行個體會使用使用者的 Windows 認證執行,而不是以服務方式執行。

如需使用使用者執行個體的詳細資訊,請參閱連接至 SQL Server Express 使用者執行個體 (ADO.NET)

使用 TrustServerCertificate

TrustServerCertificate 關鍵字是 ADO.NET 2.0 中的新增項目,只有使用有效憑證連接到 SQL Server 2005 執行個體時才是有效的。當 TrustServerCertificate 設定為 true 時,傳輸層 (Transport Layer) 會使用 SSL 來加密通道,而略過逐一檢查憑證鏈結以驗證信任的作業。

"TrustServerCertificate=true;" 
注意事項:

如果 TrustServerCertificate 是設定為 true 且加密功能已開啟,則即使 Encrypt 在連接字串中是設定為 false,仍將使用伺服器上指定的加密等級,否則連接將會失敗。

啟用加密

若要在伺服器上未提供憑證時啟用加密,必須在「SQL Server 組態管理員」中設定 [強制通訊協定加密] 和 [信任伺服器憑證] 選項。在此種情況下,如果伺服器上未提供任何可驗證的憑證,則加密會使用自我簽署的伺服器憑證而不進行驗證。

應用程式設定無法降低 SQL Server 中設定的安全性層級,但可以選擇性地進行加強。應用程式可以要求加密,方式是將 TrustServerCertificate 和 Encrypt 關鍵字設定為 true,並保證即使在未提供伺服器憑證,也未針對用戶端設定 [強制通訊協定加密] 的情況下,仍會進行加密。不過,如果用戶端組態中未啟用 TrustServerCertificate,則仍需要提供伺服器憑證。

下表說明所有案例。

強制通訊協定加密用戶端設定

信任伺服器憑證用戶端設定

資料連接字串/屬性的加密/使用加密

信任伺服器憑證連接字串/屬性

結果

No

N/A

No (預設值)

Ignored

未發生任何加密。

No

N/A

Yes

No (預設值)

加密只有在有可驗證的伺服器憑證時才會發生,否則連接嘗試就會失敗。

No

N/A

Yes

Yes

加密只有在有可驗證的伺服器憑證時才會發生,否則連接嘗試就會失敗。

Yes

No

Ignored

Ignored

加密只有在有可驗證的伺服器憑證時才會發生,否則連接嘗試就會失敗。

Yes

Yes

No (預設值)

Ignored

加密只有在有可驗證的伺服器憑證時才會發生,否則連接嘗試就會失敗。

Yes

Yes

Yes

No (預設值)

加密只有在有可驗證的伺服器憑證時才會發生,否則連接嘗試就會失敗。

Yes

Yes

Yes

Yes

加密只有在有可驗證的伺服器憑證時才會發生,否則連接嘗試就會失敗。

如需詳細資訊,請參閱《SQL Server 線上叢書》中的<不使用驗證的加密>。

OleDb 連接字串

OleDbConnectionConnectionString 屬性可讓您取得或設定 OLE DB 資料來源 (如 Microsoft Access 或 SQL Server 6.5 或更早版本) 的連接字串。您也可以使用 OleDbConnectionStringBuilder 類別 (Class),在執行階段建立 OleDb 連接字串。

OleDb 連接字串語法

您必須指定 OleDbConnection 連接字串的提供者名稱。下列連接字串會使用 Jet 提供者連接至 Microsoft Access 資料庫。請注意,如果資料庫未受保護 (預設值),則 UserID 及 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=*****;

您可以針對 SQL Server 6.5 版或更新版本的 Provider 關鍵字,使用 sqloledb。

Provider=sqloledb;Data Source=MySqlServer;Initial Catalog=pubs;User Id=*****;Password=*****;
安全性注意事項:

您可以在「通用資料連結」(UDL) 檔中提供 OleDbConnection 的連接資訊;但請不要這麼做。UDL 檔並未加密,並且會以純文字的格式公開連接字串資訊。因為對您的應用程式而言,UDL 檔是外部的檔案型資源,所以您無法使用 .NET Framework 保護該檔案。UDL 檔案不支援 SqlClient

使用 DataDirectory 連接至 Access/Jet

DataDirectory 並不是由 SqlClient 所獨佔,也可以搭配 System.Data.OleDbSystem.Data.Odbc .NET data 提供者使用。下列範例 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 資料庫未受保護,則不需要在連接字串中指定系統資料庫的位置。安全性預設為關閉,且所有連接的使用者都是使用空白密碼的內建 Admin 使用者。即使已正確地實作使用者層級的安全性,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;" 

Odbc 連接字串

OdbcConnectionConnectionString 屬性可讓您取得或設定 OLE DB 資料來源的連接字串。Odbc 連接字串也受到 OdbcConnectionStringBuilder 的支援。

下列連接字串使用 Microsoft Text Driver。

Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:\bin

使用 DataDirectory 連接至 Visual FoxPro

下列的 OdbcConnection 連接字串範例示範如何使用 DataDirectory 連接到 Microsoft Visual FoxPro 檔案。

"Driver={Microsoft Visual FoxPro Driver};
SourceDB=|DataDirectory|\MyData.DBC;SourceType=DBC;"

Oracle 連接字串

OracleConnectionConnectionString 屬性可讓您取得或設定 OLE DB 資料來源的連接字串。Oracle 連接字串也受到 OracleConnectionStringBuilder 的支援。

Data Source=Oracle9i;User ID=*****;Password=*****;

如需 ODBC 連接字串語法的詳細資訊,請參閱 ConnectionString

請參閱

其他資源

連接字串 (ADO.NET)

連接至資料來源 (ADO.NET)