正在检查 Truncate/Alter 登录权限

Checking Truncate/Alter Permission for a login

如何检查登录名是否具有特定 table 的 truncate 权限?

我们有一个名为 Test 的登录名,我们已为其单独授予 ALTER 特定 table 的权限。现在我想获取 table 的列表,Test 登录名对其具有 Alter 权限。

已登录 google,论坛找不到任何答案。

如果您想列出针对特定用户的权限,请尝试使用以下查询。

SELECT  OBJECT_NAME(major_id) TableName,PERMISSION_NAME, STATE_DESC,  U.name UserName 
FROM sys.database_permissions P 
    JOIN sys.tables T ON P.major_id = T.object_id 
    JOIN sysusers U ON U.uid = P.grantee_principal_id
WHERE U.name='Test'

您也可以使用以下功能来快速检查特定用户可用的权限。

MS SQL Documentation link.

中提供了一些有关其用法的有用信息

语法:

SELECT * FROM sys.fn_my_permissions('TEST', 'USER');

假设您有能力冒充用户,您可以执行以下操作:

execute as user = 'Test';

select p.*
from sys.tables as t
cross apply sys.fn_my_permissions(t.name, 'OBJECT') as p
    where permission_name = 'ALTER';

revert;