正在检查 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;
如何检查登录名是否具有特定 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;