qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          SQL Server 數(shù)據(jù)庫(kù)身份認(rèn)證以及包含數(shù)據(jù)庫(kù)

          首先分為SQL Server 認(rèn)證與Windows 身份認(rèn)證。
            SQL Server 認(rèn)證可以運(yùn)行以下語(yǔ)句來(lái)查詢
            1 select * from sys.sql_logins
            管理員可以直接修改密碼,但無(wú)法知曉原有密碼原文,SQL Server使用混淆算法來(lái)保護(hù)安全性不如Windows 身份認(rèn)證,
            Windows認(rèn)證模式
            首先分為本機(jī)賬號(hào)與域賬號(hào)
            SQL Server 將認(rèn)證和授權(quán)分散給了不同的對(duì)象來(lái)完成,SQL Server 的“登入名”(Login)用于認(rèn)證,連接SQL Server 的SQL或者Windows 賬戶必須在SQL Server中有對(duì)應(yīng)的登入名才能成功登入。
            而每個(gè)數(shù)據(jù)庫(kù)中的“用戶”(User)被授予了操作數(shù)據(jù)庫(kù)中對(duì)象的相應(yīng)權(quán)限。登入名和用戶之間通過(guò)SID聯(lián)系起來(lái),于是登入SQL Server 的登入名也獲得了操作數(shù)據(jù)庫(kù)的相應(yīng)權(quán)限。
            這個(gè)機(jī)制帶來(lái)以下兩個(gè)問(wèn)題:
            1.提高了高可用解決方案的維護(hù)成本。msdb(系統(tǒng)數(shù)據(jù)庫(kù))無(wú)法被鏡像。類似制作數(shù)據(jù)庫(kù)鏡像系統(tǒng),就需同時(shí)在主體和鏡像服務(wù)器上的添加同樣的用戶名密碼,否則發(fā)生故障轉(zhuǎn)移,鏡像服務(wù)就無(wú)法使用新的登入名進(jìn)行登入。另外,在鏡像服務(wù)器上添加登入名時(shí)要確保和主體服務(wù)器上的登入名使用相同的SID,否則就會(huì)破壞登入名到數(shù)據(jù)庫(kù)用戶之間的對(duì)應(yīng)關(guān)系。成為所謂的孤立賬戶。
            2.增加了遷移數(shù)據(jù)庫(kù)的復(fù)雜性。不能僅僅簡(jiǎn)單地遷移用戶數(shù)據(jù)數(shù)據(jù)庫(kù)和程序。因?yàn)檫€有一部分和應(yīng)用相關(guān)的對(duì)象遺漏在用戶數(shù)據(jù)庫(kù)之外,其中包括登入名。在遷移應(yīng)用的時(shí)候,登入名需被單獨(dú)的從老的環(huán)境中提取出來(lái),在部署到新的環(huán)境上。
            前提是數(shù)據(jù)庫(kù)兼容級(jí)別110以上,即2012以上。包含數(shù)據(jù)庫(kù)創(chuàng)建。。
            1 EXEC sys.sp_configure N'contained database authentication', N'1'
            2 GO
            3 RECONFIGURE WITH OVERRIDE
            4 GO
            修改[AdventureWorks2012]為包含數(shù)據(jù)庫(kù)
            1 USE [master]
            2 GO
            3 ALTER DATABASE [AdventureWorks2012] SET CONTAINMENT = PARTIAL WITH NO_WAIT
            4 GO
            查詢實(shí)例中所有的包含數(shù)據(jù)庫(kù)
            1 use master
            2 select * from sys.databases
            3 where containment >0
            將現(xiàn)有的數(shù)據(jù)庫(kù)用戶改為包含數(shù)據(jù)庫(kù)用戶
          1 USE [AdventureWorks2012]
          2 GO
          3 DECLARE @username SYSNAME;
          4 DECLARE user_cursor CURSOR
          5 FOR
          6     SELECT  dp.name
          7     FROM    sys.database_principals AS dp
          8             JOIN sys.server_principals AS sp ON dp.sid = sp.sid
          9     WHERE   dp.authentication_type = 1
          10             AND sp.is_disabled = 0;
          11 OPEN user_cursor
          12 FETCH NEXT FROM user_cursor INTO @username
          13 WHILE @@FETCH_STATUS = 0
          14     BEGIN
          15         EXECUTE sp_migrate_user_to_contained @username = @username,
          16             @rename = N'keep_name', @disablelogin = N'disable_login';
          17         FETCH NEXT FROM user_cursor INTO @username
          18     END
          19 CLOSE user_cursor;
          20 DEALLOCATE user_cursor;

          posted on 2014-11-18 10:05 順其自然EVO 閱讀(250) 評(píng)論(0)  編輯  收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄

          <2014年11月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 张家口市| 工布江达县| 河池市| 洛扎县| 和政县| 普定县| 河间市| 巫山县| 定州市| 长海县| 鱼台县| 巴塘县| 西青区| 融水| 潼关县| 漠河县| 锡林郭勒盟| 长泰县| 桐庐县| 综艺| 大姚县| 柘城县| 黑龙江省| 河东区| 滕州市| 昭苏县| 安阳县| 积石山| 陆良县| 方城县| 京山县| 元阳县| 无为县| 桑日县| 乌鲁木齐县| 祁阳县| 陵川县| 九龙城区| 铜鼓县| 永丰县| 南川市|