SQL Server 2012中引入了兩項(xiàng)功能,即創(chuàng)建用戶自定義服務(wù)器角色和分配服務(wù)器級(jí)別的權(quán)限。本文為初級(jí)DBA給出了一個(gè)用戶自定義服務(wù)器角色的示范用例。
用戶自定義服務(wù)器角色是用SQL Server Management Studio(SSMS)和T-SQL代碼創(chuàng)建的。
你可以添加服務(wù)器級(jí)別的主體,例如為在SQL Server 2012及后續(xù)版本中的用戶自定義服務(wù)器角色創(chuàng)建SQL Server登錄,Windows賬戶和Windows分組。然后,你可以顯式指定這些成員的權(quán)限。
可以為一個(gè)用戶自定義服務(wù)器角色賦予哪些權(quán)限?
執(zhí)行以下查詢(xún)可以列出在SQL Server 2012及后續(xù)版本中授予一個(gè)用戶自定義服務(wù)器角色的權(quán)限。
USE master
GO
SELECT * FROM sys.fn_builtin_permissions(DEFAULT)
WHEREclass_desc IN ('ENDPOINT','LOGIN','SERVER','AVAILABILITY GROUP','SERVERROLE')
ORDERBY class_desc, permission_name
GO
創(chuàng)建SQL Server登錄 建立一個(gè)新的用戶自定義服務(wù)器角色的首要步驟是創(chuàng)建或添加一個(gè)新的登錄,然后它便可以分配給一個(gè)新用戶自定義服務(wù)器角色。你可以通過(guò)執(zhí)行下面的T-SQL查詢(xún)來(lái)創(chuàng)建一個(gè)新的SQL Server登錄。
USE master
GO
CREATE LOGIN [Brinto] WITH PASSWORD = 'Brint0@1234',
DEFAULT_DATABASE= [master],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF
GO
在SSMS中創(chuàng)建用戶自定義SQL Server角色
在登錄成功創(chuàng)建之后,接下來(lái)的步驟就是用SQL Server Management Studio(SSMS)或T-SQL代碼創(chuàng)建一個(gè)用戶自定義SQL Server角色。用SSMS連接至一個(gè)SQL Server2012實(shí)例并打開(kāi)ObjectExplorer。
展開(kāi)Security文件夾并右擊ServerRoles文件夾,然后從下拉菜單中選擇New Server Role… 。
在New Server Role窗口的General頁(yè)面中,輸入合適的服務(wù)器角色名稱(chēng)。在Owner方框中,輸入將要擁有此NewServer Role的服務(wù)器主體。在Securable下面,選擇一個(gè)或多個(gè)服務(wù)器級(jí)別的安全對(duì)象。在選擇了一個(gè)安全對(duì)象后,你便可以賦予或收回此安全實(shí)體的權(quán)限。
在Permissions: Explici下的方框中,勾選復(fù)選框?yàn)橐堰x的安全實(shí)體的服務(wù)器角色賦予GRANT,WITH GRANT 或 DENY權(quán)限。在這種情況下,我為此服務(wù)器角色選擇了ALTERTRACE,CONNECT SQL,CREATE ANY DATABASE,VIEWANY DATABASE,VIEW ANY DEFINITION和VIEWSERVER STATE權(quán)限。
圖1: 在General頁(yè)面上為新服務(wù)器角色選擇權(quán)限 在Members頁(yè)面上,用Add… 按鈕來(lái)為此新服務(wù)器角色添加SQL Server登錄,Windows賬戶以及Windows群組。在這個(gè)演示中,我選擇新添加的SQL Server登錄。
圖2: 用Members頁(yè)面為新服務(wù)器角色添加新的角色成員。
在Members頁(yè)面上,勾選復(fù)選框以便讓新的用戶自定義服務(wù)器角色成為固定服務(wù)器角色的一個(gè)成員。最后,點(diǎn)擊OK在SQL Server 2012中完成創(chuàng)建一個(gè)用戶自定義服務(wù)器角色。
圖 3: 在Members頁(yè)面上創(chuàng)建用戶自定義服務(wù)器角色。
在成功創(chuàng)建用戶自定義服務(wù)器角色之后,就可以在Server Roles下找到它了。
圖 4: 新的服務(wù)器角色在Server Roles文件夾下。
用T-SQL查詢(xún)創(chuàng)建用戶自定義SQL Server角色 要用T-SQL創(chuàng)建一個(gè)用戶自定義SQL Server角色,需執(zhí)行以下T-SQL代碼。
USE [master]
GO
CREATE SERVER ROLE [JuniorDBA] AUTHORIZATION [sa]
GO
ALTER SERVER ROLE [JuniorDBA] ADD MEMBER [Brinto]
GO 用T-SQL查詢(xún)?yōu)橛脩糇远xSQL Server角色授予權(quán)限 執(zhí)行以下T-SQL代碼為以上用T-SQL代碼創(chuàng)建的用戶自定義服務(wù)器角色添加相應(yīng)權(quán)限。我選擇給此示例角色賦予ALTERTRACE,CONNECT SQL,CREATE ANY DATABASE,VIEWANY DATABASE,VIEW ANY DEFINITION和VIEWSERVER STATE等權(quán)限。
USE [master]
GO
GRANT ALTER TRACE TO [JuniorDBA];
GRANT CONNECT SQL TO [JuniorDBA];
GRANT CREATE ANY DATABASE TO [JuniorDBA];
GRANT VIEW ANY DATABASE TO [JuniorDBA];
GRANT VIEW ANY DEFINITION TO [JuniorDBA];
GRANT VIEW SERVER STATE TO [JuniorDBA];
驗(yàn)證權(quán)限 通過(guò)在一個(gè)新建的查詢(xún)窗口中執(zhí)行下面的T-SQL查詢(xún)來(lái)快速驗(yàn)證為新創(chuàng)建的服務(wù)器角色分配的權(quán)限。因?yàn)橛脩粲蠽IEW SERVERSTATE權(quán)限,所以你可以從動(dòng)態(tài)管理視圖中獲取結(jié)果。
SELECT SUSER_SNAME()
EXECUTE AS LOGIN = 'Brinto' SELECT SUSER_SNAME()
SELECT * FROM sys.dm_os_windows_info
REVERT
SELECT SUSER_SNAME()