Sql-Server
在 SQL Server 2012 中獲取固定或使用者定義的伺服器角色的權限
我想知道如何獲取屬於 SQL Server 2012 中固定和/或使用者定義的伺服器角色的權限列表。
在以前的版本中,有一個sproc sp_srvrolepermission,但在 2012 年已棄用,它僅返回固定伺服器角色的權限。
更新
我已經執行了以下查詢並在下面得到了結果。我希望這個查詢可以給我想要的結果。但是,儘管它確實為我提供了使用者定義角色的結果(
MyTestRole
如下),但找不到固定角色。SELECT pri.name principal_name, per.class_desc, per.permission_name FROM sys.server_permissions per JOIN sys.server_principals pri ON per.grantee_principal_id = pri.principal_id ORDER BY pri.name
結果:
##MS_AgentSigningCertificate## SERVER CONNECT SQL ##MS_PolicyEventProcessingLogin## SERVER CONNECT SQL ##MS_PolicySigningCertificate## SERVER CONTROL SERVER ##MS_PolicySigningCertificate## SERVER VIEW ANY DEFINITION ##MS_PolicyTsqlExecutionLogin## SERVER CONNECT SQL ##MS_PolicyTsqlExecutionLogin## SERVER VIEW ANY DEFINITION ##MS_PolicyTsqlExecutionLogin## SERVER VIEW SERVER STATE ##MS_SmoExtendedSigningCertificate## SERVER VIEW ANY DEFINITION ##MS_SQLAuthenticatorCertificate## SERVER AUTHENTICATE SERVER ##MS_SQLEnableSystemAssemblyLoadingUser## SERVER CONNECT SQL ##MS_SQLEnableSystemAssemblyLoadingUser## SERVER UNSAFE ASSEMBLY ##MS_SQLReplicationSigningCertificate## SERVER AUTHENTICATE SERVER ##MS_SQLReplicationSigningCertificate## SERVER VIEW ANY DEFINITION ##MS_SQLReplicationSigningCertificate## SERVER VIEW SERVER STATE ##MS_SQLResourceSigningCertificate## SERVER VIEW ANY DEFINITION ##MS_SSISServerCleanupJobLogin## SERVER CONNECT SQL MyTestRole SERVER VIEW ANY DATABASE NT AUTHORITY\SYSTEM SERVER ALTER ANY AVAILABILITY GROUP NT AUTHORITY\SYSTEM SERVER CONNECT SQL NT AUTHORITY\SYSTEM SERVER VIEW SERVER STATE NT Service\MSSQLSERVER SERVER CONNECT SQL NT SERVICE\ReportServer SERVER CONNECT SQL NT SERVICE\SQLSERVERAGENT SERVER CONNECT SQL NT SERVICE\SQLWriter SERVER CONNECT SQL NT SERVICE\Winmgmt SERVER CONNECT SQL public ENDPOINT CONNECT public ENDPOINT CONNECT public ENDPOINT CONNECT public ENDPOINT CONNECT public SERVER VIEW ANY DATABASE <computer>\<username> SERVER CONNECT SQL sa SERVER CONNECT SQL
看看 sys.server_permissions 和 sys.database_permissions。在這兩種情況下,grantee_principal_id 將是角色的 principal_id(分別在 sys.server_principals 或 sys.database_principals 中找到)。請記住,您可能還需要查看角色的角色成員資格(即在數據庫中,我可以創建一個名為“MyRole”的角色,它是 db_datareader 內置角色的成員)。