在SQL Server 2012中获取固定或用户定义的服务器angular色的权限

我想知道如何获取属于SQL Server 2012中的固定和/或用户定义的服务器angular色的权限列表。

在以前的版本中,有一个spssrvrolepermission sprog,但是在2012年不推荐使用,它只返回固定服务器angular色的权限。

更新

我已经运行下面的查询,并得到下面的结果。 我希望这个查询可能会给我想要的结果。 但是,尽pipe它给我提供了用户定义angular色的结果(下面的MyTestRole ),但固定angular色却无处可寻。

 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都是angular色的principal_id(分别在sys.server_principals或sys.database_principals中find)。 请记住,您可能还需要通过angular色成员身份来angular色(即在数据库中,我可以创build一个名为“MyRole”的angular色,该angular色是db_datareader内置angular色的成员)。