來源:http://www.cnblogs.com/lanse777/archive/2007/03/28/691757.html
SQL Server .NET Data Provider 連接字串包含一個由一些屬性名稱/值對組成的集合。每一個屬性/值對都由分號隔開。 PropertyName1=Value1;PropertyName2=Value2;PropertyName3=Value3;..... 同樣,連接字串必須包含SQL Server執行個體名稱: Data Source=ServerName;
使用本地的SQL Server(localhost),如果想要使用遠程伺服器運行,應該在樣本對象中把正確的伺服器賦給Data Source 屬性。此外,還必須指定所支援的兩種驗證方法(即Windows身分識別驗證和SQL Server身分識別驗證)中的其中一種。Windows身分識別驗證使用Windows登入使用者身份串連資料庫,而SQL身分識別驗證要求顯式地指定SQL Server使用者ID和密碼。要想使用Windows身分識別驗證,必須在連接字串中包括 Integrated Security 屬性:
Data Source=ServerName;Integrated Security=True;
預設情況下,Integrated Security 屬性為 False ,這意味著將禁用Windows身分識別驗證。如果沒有顯式地把這個屬性的值設定為True,串連將使用SQL Server身分識別驗證,因此,必須提供SQL Server使用者ID和密碼。Integrated Security屬性還能識別的其他值只有SSPI(Security Support Provider Interface,安全性支援提供者介面).在所有的Windows NT作業系統上,其中包括Windows NT 4.0、2000、XP,都支援值SSPI。它是使用Windows身分識別驗證時可以使用的惟一介面,相當於把Integrated Security 屬性值設定為True。
在Windows身分識別驗證模式中,SQL Server使用Windows的安全子系統對使用者串連進行有效性驗證。即使顯示地指定使用者ID和密碼,SQL Server也不檢查連接字串中的使用者ID和密碼。因為只有Windows NT、2000、XP支援SSPI,因此如果正使用的是這些作業系統,則只能使用Windows整合的安全性原則去串連SQL Server。不論使用哪一個作業系統,當使用SQL Server身分識別驗證時,必須在連接字串中指定使用者ID和密碼:
Data Source=ServerName;User ID=donaldx;Password=unbreakable
預設情況下,SQL Server .NET Data Provider串連指定使用者的預設資料庫,當在資料庫中建立使用者時,可以設定使用者的預設資料庫。此外,也可以在任意時間更改使用者的預設資料庫。例如,系統管理員的預設資料庫是master。如果想要串連不同的資料庫,應該指定資料庫的名稱:
Data Source=ServerName;Integrated Security=SSPI;Initial Catalog=Northwind
每一種身分識別驗證都有它的優點和缺點。Windows身分識別驗證使用單一的使用者資訊庫源,因此,不需要為資料庫訪問去分別配置使用者。連接字串不包含使用者ID和密碼,因此消除了把使用者ID和密碼暴露給未授權的使用者的危險。可以在Active Directory中系統管理使用者和他們的角色,而不必在SQL Server中顯式地配置他們的屬性。 Windows身分識別驗證的缺點是,它要求客戶通過Windows的安全子系統支援的安全通道去串連SQL Server。如果應用種序需要通過不安全的網路(例如Internet)串連SQL Server,Windows身分識別驗證將不工作。此外,這種驗證方法也部分地把管理資料庫存取控制的責任從DBA身上轉移到了系統管理員身上,這在確定的環境中也許是一個問題。
一般而言,在設計通用的應用程式時,為了使用Windows身分識別驗證,將會對一些方面進行加強。大多數公司的資料庫都駐留在比較健壯的Windows伺服器作業系統上,那些作業系統都支援Windows身分識別驗證。資料訪問層和資料展示層的分離也促進了把資料存取碼封裝在中介層組件思想的應用,中介層組件通常運行在具有資料庫伺服器的內部網路中。當這樣設計時,就不需要通過不安全通道建立資料庫連接。除此之外,Web服務也使直接連接不同域中資料庫的需要大減少。