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