Sql server 如何检查用户是否有权查看SQL Server上的视图定义?
如何查找登录用户是否有权查看SQL Server上的视图定义?我需要找出视图是由哪些表/列组成的 我也使用了同样的SQL;对于视图定义,我们使用以下查询: 查询:Sql server 如何检查用户是否有权查看SQL Server上的视图定义?,sql-server,permissions,Sql Server,Permissions,如何查找登录用户是否有权查看SQL Server上的视图定义?我需要找出视图是由哪些表/列组成的 我也使用了同样的SQL;对于视图定义,我们使用以下查询: 查询: select * from sys.objects where name like '%SECTION_MASTER_V%' SELECT definition FROM sys.objects o JOIN sys.sql_modules m ON m.object_id = o.object_id WHERE o.obje
select *
from sys.objects
where name like '%SECTION_MASTER_V%'
SELECT definition
FROM sys.objects o
JOIN sys.sql_modules m ON m.object_id = o.object_id
WHERE o.object_id = 579337674
AND o.type = 'V'
结果:579337674
查询:
select *
from sys.objects
where name like '%SECTION_MASTER_V%'
SELECT definition
FROM sys.objects o
JOIN sys.sql_modules m ON m.object_id = o.object_id
WHERE o.object_id = 579337674
AND o.type = 'V'
结果:空
结果我得到空值。有人知道这里可能出了什么问题吗?有两件事:
使用sp_helptext:这比跳过系统表容易得多。
您可以使用sys.fn_my_permissions查看您对任何对象的权限。
您可以使用此查询查看对象级权限:WHERE子句中的注释掉部分将结果限制为查看定义权限
SELECT
o.name AS ObjectName,
su.name AS LoginName,
dp.permission_name AS PermissionType,
dp.state_desc AS PermissionStatus
FROM
sys.database_permissions dp
INNER JOIN
sys.objects o ON
dp.major_id = o.object_id
INNER JOIN
sys.sysusers su ON
dp.grantee_principal_id = su.uid
--WHERE dp.[type] = 'vw'
ORDER BY o.name