[SQL]SQL Server 2012 – Security and Compliance (SQL 150)

  • 3220
  • 0
  • SQL
  • 2012-08-08

[SQL]SQL Server 2012 – Security and Compliance (SQL 150)

開始練習Lab時,請先參考「使用SQL Server Virtual Labs注意的地方」。

活動:SQL SERVER 好文比賽

主題:SQL Server 2012 – Security and Compliance (SQL 150)

 

Exercise 1: Exploring User Defined Server Roles

SQL 2012提供使用者定義的伺服器角色,如果現有的伺服器角色不符合需求的話,可以新增伺服器角色。

可透過以下的SQL查看 登入帳號及擁有的權限 (PS.Manual上的SQL有錯誤哦)。

SELECT 
   sp.name, 
   sp.type_desc, 
   p.permission_name, 
   p.state_desc 
FROM sys.server_permissions p
JOIN sys.server_principals sp 
ON p.grantee_principal_id = sp.principal_id 
WHERE sp.type IN ('S','U','G');

 

 

image

 

image

image

--可透過ADD MEMBER來加入 SERVER ROLE
ALTER SERVER ROLE [DatabaseTuner] ADD MEMBER [User1]; 

 

 

這樣User1就有DatabaseTuner的角色,就可以執行 DBCC FREEPROCCACHE  。

 

Exercise 2: Creating a Contained Database (建立自主資料庫)

SQL 2012之前的SQL SERVER是非自主資料庫,因為資料庫需要依賴額外的資訊,如

· Server logins.
· Collation settings.
· SQL Server Agent jobs.
· Linked server configuration information.

SQL 2012可建立自主資料庫,將權限有效的隔離

Task 1: Creating a contained database

設定Server啟用自主資料庫屬性為True,並重新啟動服務。

image

建立一個自主資料庫,名稱為 ContainedDB,並在Options page中設定Containment type為Partial。

image

然後可在ContainedDB中建立一個使用者ContainedUser後,就可用該使用者直接登入到ContainedDB。

image

image

image

 

Exercise 3: Moving a Contained Database

Task 1: Moving a Contained Database

我們可將自主資料庫備份,到其他DB Server  Restore。

如果其他DB Server要Restore 自主資料庫的話,Server的驗証模式要設定成SQL Server and Windows Authentication mode。

當然,也要設定Server啟用自主資料庫屬性為True。

先在SQLONE中備份ContainedDB

BACKUP DATABASE ContainedDB 
TO DISK=’c:\LabFiles\ContainedDB.bak’ 

 

 

 

然後在SQLTWO 中RESTORE ContainedDB後,並用ContainedUser登入ContainedDB。

image

 

Exercise 4: Migrating an Existing Database to a Contained Database

以下練習要將非自主資料庫升級到自主資料庫。

Task 1: Converting a database to a contained database

可透過「sys.dm_db_uncontained_entities 」來查看有那些非自主的物件。

image

將資料庫屬性設定Containment type為Partial。

image

ALTER DATABASE AdventureWorks2012 SET CONTAINMENT=PARTIAL; 

 

 

 

再透過「sp_migrate_user_to_contained 」將對應至 SQL Server 登入的資料庫使用者移轉為具有密碼之自主資料庫使用者。

EXEC sp_migrate_user_to_contained 
@username = N'NewUnContainedUser', 
@rename = N'keep_name', 
@disable_login = N'disable_login'

 

 

 

這樣我們就可以使用「NewUnContainedUser  」登入自主資料庫 AdventureWorks2012 。

image

image

image

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^