在SQL Server 2012引入的諸多功能中,包含數(shù)據(jù)庫(Contained Database)可能是最具價值的功能之一。與典型的SQL Server數(shù)據(jù)庫不同埃仪,包含數(shù)據(jù)庫與其所屬的SQL Server實例相隔離响谓,同樣與在此實例上的其他數(shù)據(jù)庫相隔離。這樣的隔離使得管理數(shù)據(jù)庫更為容易毁嗦,尤其是在將它們遷移到一個不同的實例上或是用它們來實現(xiàn)一個故障轉(zhuǎn)移集群的時候亲茅。
在SQL Server 2012之前,我們認(rèn)為所有的SQL Server數(shù)據(jù)庫都是非包含的狗准。具體到數(shù)據(jù)庫克锣,元數(shù)據(jù)是游離于數(shù)據(jù)庫之外的。服務(wù)器的默認(rèn)排序規(guī)則可能會影響到對數(shù)據(jù)庫的查詢腔长。而且數(shù)據(jù)庫中的用戶身份驗證綁定在服務(wù)器級別上的登錄袭祟,而這些登錄是定義在實例上的。(都應(yīng)該在master數(shù)據(jù)庫內(nèi))捞附。
在SQL Server 2012中巾乳,所有的數(shù)據(jù)庫仍然默認(rèn)是非包含的。盡管如此鸟召,我們現(xiàn)在可以將任何非系統(tǒng)數(shù)據(jù)庫配置為包含的胆绊。這樣,元數(shù)據(jù)就會如其所述駐留在數(shù)據(jù)庫內(nèi)欧募。另外压状,由于排序模型已經(jīng)大為簡化,所有的用戶數(shù)據(jù)和臨時數(shù)據(jù)會使用默認(rèn)數(shù)據(jù)庫排序規(guī)則槽片,而且所有其他的對象(元數(shù)據(jù)何缓、臨時元數(shù)據(jù)、變量等)會使用目錄排序还栓,即Latin1_General_100_CI_AS_WS_KS_SC 是面向所有包含數(shù)據(jù)庫的碌廓。
SQL Server 2012包含數(shù)據(jù)庫所帶來的最為重要的變化就是“包含用戶”,即專門為包含數(shù)據(jù)庫創(chuàng)建的一個用戶賬戶剩盒。此賬戶沒有綁定到服務(wù)器級別的登錄并只提供了對包含數(shù)據(jù)庫的訪問谷婆,且不授權(quán)訪問其他數(shù)據(jù)庫或整體實例。
實際上,我們?nèi)匀豢梢蕴砑踊诘卿浀馁~戶纪挎。這是因為SQL Server2012支持所謂的“部分包含數(shù)據(jù)庫”期贫,而不是完全包含數(shù)據(jù)庫。
在我們將SQL Server 2012包含數(shù)據(jù)庫隔離之后异袄,就可以輕易將其從一個SQL Server實例遷移至另一個SQL Server實例通砍,而不必遷移一組SQL Server登錄。此包含數(shù)據(jù)庫存儲了數(shù)據(jù)庫內(nèi)所需的所有信息烤蜕。這一過程也讓設(shè)置我們的高可用性集群變得更加容易封孙。因為用戶是直接連接到數(shù)據(jù)庫的,所以如果發(fā)生故障轉(zhuǎn)移讽营,我們就可以很容易地連接到第二個數(shù)據(jù)庫虎忌。
即使我們不將數(shù)據(jù)庫進(jìn)行遷移或集群化,SQL Server 2012包含數(shù)據(jù)庫也能夠讓用戶賬戶管理更為簡單橱鹏,因為我不用試圖同時管理SQL Server登錄和數(shù)據(jù)庫用戶賬戶膜蠢。還可以授權(quán)特定用戶訪問特定數(shù)據(jù)庫,而不用擔(dān)心用戶訪問那些非授權(quán)項莉兰。
然而在有眾多優(yōu)點的同時挑围,缺點也與之共生。例如贮勃,包含數(shù)據(jù)庫無法使用復(fù)制贪惹,變更跟蹤或變更數(shù)據(jù)抓取。此外寂嘉,與包含用戶賬戶關(guān)聯(lián)的密碼散列是存儲在數(shù)據(jù)庫中的奏瞬,就使得他們更容易遭受字典攻擊。
盡管有這些局限性泉孩,如果對包含數(shù)據(jù)庫加以精心實現(xiàn)硼端,我們你還是可以規(guī)避一些安全問題并獲得數(shù)據(jù)庫隔離所帶來的好處。SQL Server包含數(shù)據(jù)庫提供了一個在之前的SQL Server中未曾見過的可移植性和可管理性級別寓搬。遷移數(shù)據(jù)庫變得更加容易珍昨。故障轉(zhuǎn)移也更為簡便。訪問管理同樣變得更加容易句喷。實際上镣典,SQL Server 2012中的包含數(shù)據(jù)庫功能對于任何想要簡化其操作的組織來說可能都會有所裨益。
小D筆記
好比公司里面不同部門(database)財務(wù)(Login)之前都統(tǒng)一交由財務(wù)處管理(master for Login Management)唾琼,現(xiàn)在呢兄春,有的部門準(zhǔn)備另起爐灶了,自己設(shè)立了一個財務(wù)部門(User for Login)锡溯,自主盈虧赶舆。所謂包含哑姚,我的東西還是自己揣兜里比較好啊。