qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          SQL Server 數據庫身份認證以及包含數據庫

          首先分為SQL Server 認證與Windows 身份認證。
            SQL Server 認證可以運行以下語句來查詢
            1 select * from sys.sql_logins
            管理員可以直接修改密碼,但無法知曉原有密碼原文,SQL Server使用混淆算法來保護安全性不如Windows 身份認證,
            Windows認證模式
            首先分為本機賬號與域賬號
            SQL Server 將認證和授權分散給了不同的對象來完成,SQL Server 的“登入名”(Login)用于認證,連接SQL Server 的SQL或者Windows 賬戶必須在SQL Server中有對應的登入名才能成功登入。
            而每個數據庫中的“用戶”(User)被授予了操作數據庫中對象的相應權限。登入名和用戶之間通過SID聯系起來,于是登入SQL Server 的登入名也獲得了操作數據庫的相應權限。
            這個機制帶來以下兩個問題:
            1.提高了高可用解決方案的維護成本。msdb(系統數據庫)無法被鏡像。類似制作數據庫鏡像系統,就需同時在主體和鏡像服務器上的添加同樣的用戶名密碼,否則發生故障轉移,鏡像服務就無法使用新的登入名進行登入。另外,在鏡像服務器上添加登入名時要確保和主體服務器上的登入名使用相同的SID,否則就會破壞登入名到數據庫用戶之間的對應關系。成為所謂的孤立賬戶。
            2.增加了遷移數據庫的復雜性。不能僅僅簡單地遷移用戶數據數據庫和程序。因為還有一部分和應用相關的對象遺漏在用戶數據庫之外,其中包括登入名。在遷移應用的時候,登入名需被單獨的從老的環境中提取出來,在部署到新的環境上。
            前提是數據庫兼容級別110以上,即2012以上。包含數據庫創建。。
            1 EXEC sys.sp_configure N'contained database authentication', N'1'
            2 GO
            3 RECONFIGURE WITH OVERRIDE
            4 GO
            修改[AdventureWorks2012]為包含數據庫
            1 USE [master]
            2 GO
            3 ALTER DATABASE [AdventureWorks2012] SET CONTAINMENT = PARTIAL WITH NO_WAIT
            4 GO
            查詢實例中所有的包含數據庫
            1 use master
            2 select * from sys.databases
            3 where containment >0
            將現有的數據庫用戶改為包含數據庫用戶
          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 閱讀(251) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

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

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 清新县| 秦皇岛市| 堆龙德庆县| 石屏县| 资阳市| 湖南省| 武山县| 威海市| 莎车县| 石河子市| 呼伦贝尔市| 孟津县| 怀柔区| 襄汾县| 垦利县| 宁津县| 辽宁省| 隆尧县| 同德县| 三亚市| 滁州市| 溧水县| 固安县| 乐山市| 拜泉县| 葵青区| 邻水| 五大连池市| 读书| 高安市| 体育| 富裕县| 宁蒗| 青神县| 英吉沙县| 渑池县| 榕江县| 陇南市| 星座| 米泉市| 康乐县|