SQL Server 連接字符串的實現(xiàn)步驟
此文章主要和大家講述的是SQL Server 連接字符串與身份驗證的實際操作流程, 我們大家都知道SQL Server .NET Data Provider 連接字符串主要包含的是一個由一些屬性名/值對組成的集合。每一個屬性/值對都由分號隔開。
- PropertyName1=Value1;PropertyName2=Value2;PropertyName3=Value3;.....
同樣,SQL Server 連接字符串必須包含SQL Server實例名稱:
- Data Source=ServerName;
使用本地的SQL Server(localhost),如果想要使用遠程服務(wù)器運行,應(yīng)該在示例對象中把正確的服務(wù)器賦給Data Source 屬性。此外,還必須指定所支持的兩種身份驗證方法(即Windows身份驗證和SQL Server身份驗證)中的其中一種。
Windows身份驗證使用Windows登錄用戶身份連接數(shù)據(jù)庫,而SQL身份驗證要求顯式地指定SQL Server用戶ID和密碼。要想使用Windows身份驗證,必須在連接字符串中包括 Integrated Security 屬性:
- Data Source=ServerName;Integrated Security=True;
默認情況下,Integrated Security 屬性為 False ,這意味著將禁用Windows身份驗證。如果沒有顯式地把這個屬性的值設(shè)置為True,連接將使用SQL Server身份驗證,因此,必須提供SQL Server用戶ID和密碼。Integrated Security屬性還能識別的其他值只有SSPI(Security Support Provider Interface,安全性支持提供者接口).在所有的Windows NT操作系統(tǒng)上,其中包括Windows NT 4.0、2000、XP,都支持值SSPI。
它是使用Windows身份驗證時可以使用的惟一接口,相當于把Integrated Security 屬性值設(shè)置為True。
在Windows身份驗證模式中,SQL Server使用Windows的安全子系統(tǒng)對用戶連接進行有效性驗證。即使顯示地指定用戶ID和密碼,SQL Server也不檢查連接字符串中的用戶ID和密碼。因為只有Windows NT、2000、XP支持SSPI,因此如果正使用的是這些操作系統(tǒng),則只能使用Windows集成的安全策略去連接SQL Server。不論使用哪一個操作系統(tǒng),當使用SQL Server身份驗證時,必須在SQL Server 連接字符串中指定用戶ID和密碼:
- Data Source=ServerName;User ID=donaldx;Password=unbreakable
默認情況下,SQL Server .NET Data Provider連接指定用戶的默認數(shù)據(jù)庫,當在數(shù)據(jù)庫中創(chuàng)建用戶時,可以設(shè)置用戶的默認數(shù)據(jù)庫。此外,也可以在任意時間更改用戶的默認數(shù)據(jù)庫。例如,系統(tǒng)管理員的默認數(shù)據(jù)庫是master。如果想要連接不同的數(shù)據(jù)庫,應(yīng)該指定數(shù)據(jù)庫的名稱:
- Data Source=ServerName;Integrated Security=SSPI;Initial Catalog=Northwind
每一種身份驗證都有它的優(yōu)點和缺點。Windows身份驗證使用單一的用戶信息庫源,因此,不需要為數(shù)據(jù)庫訪問去分別配置用戶。SQL Server 連接字符串不包含用戶ID和密碼,因此消除了把用戶ID和密碼暴露給未授權(quán)的用戶的危險。可以在Active Directory中管理用戶和他們的角色,而不必在SQL Server中顯式地配置他們的屬性。
Windows身份驗證的缺點是,它要求客戶通過Windows的安全子系統(tǒng)支持的安全通道去連接SQL Server。如果應(yīng)用種序需要通過不安全的網(wǎng)絡(luò)(例如Internet)連接SQL Server,Windows身份驗證將不工作。此外,這種身份驗證方法也部分地把管理數(shù)據(jù)庫訪問控制的責任從DBA身上轉(zhuǎn)移到了系統(tǒng)管理員身上,這在確定的環(huán)境中也許是一個問題。
一般而言,在設(shè)計通用的應(yīng)用程序時,為了使用Windows身份驗證,將會對一些方面進行加強。大多數(shù)公司的數(shù)據(jù)庫都駐留在比較健壯的Windows服務(wù)器操作系統(tǒng)上,那些操作系統(tǒng)都支持Windows身份驗證。
數(shù)據(jù)訪問層和數(shù)據(jù)表示層的分離也促進了把數(shù)據(jù)訪問代碼封裝在中間層組件思想的應(yīng)用,中間層組件通常運行在具有數(shù)據(jù)庫服務(wù)器的內(nèi)部網(wǎng)絡(luò)中。當這樣設(shè)計時,就不需要通過不安全通道建立數(shù)據(jù)庫連接。除此之外,Web服務(wù)也使直接連接不同域中數(shù)據(jù)庫的需要大減少。
【編輯推薦】