【问题标题】:How to check if user has permissions to see View definitions on SQL Server?如何检查用户是否有权查看 SQL Server 上的视图定义?
【发布时间】:2014-07-03 19:20:17
【问题描述】:

如何确定登录用户是否有权查看 SQL Server 上的“查看”定义?我需要找出视图是由哪些表/列组成的,

我同样使用了这个 SQL;对于视图定义,我们使用了这个查询:

查询:

select * 
from sys.objects 
where name like '%SECTION_MASTER_V%' 

结果:579337674

查询:

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'   

结果:null

结果我得到 null 。有谁知道这里可能出了什么问题?

【问题讨论】:

    标签: sql-server permissions


    【解决方案1】:

    您可以使用此查询查看对象级权限:WHERE 子句中的注释部分会将结果限制为VIEW DEFINITION 权限。

    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
    

    【讨论】:

      【解决方案2】:

      两件事:

      1. 使用 sp_helptext:这比在系统表中跳转要容易得多。
      2. 您可以使用 sys.fn_my_permissions 查看您对任何对象拥有哪些权限。

      【讨论】:

        猜你喜欢
        • 2013-12-09
        • 1970-01-01
        • 2022-01-22
        • 2011-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-24
        相关资源
        最近更新 更多