SSMS查看表权限界面“有效权限”时执行的脚本/存储过程是什么?
SSMS获取对象有效权限依赖的系统对象及逻辑
SSMS在计算对象的有效权限时,核心依赖以下系统函数和视图:
sys.fn_my_permissions:这是核心函数,用于返回指定主体对目标对象的有效权限集合,SSMS直接调用它来获取权限数据。sys.fn_builtin_permissions:用于获取SQL Server内置的所有权限定义,辅助权限的解析与展示。- 系统视图:
sys.database_permissions、sys.server_permissions、sys.database_principals、sys.server_principals,这些视图存储了显式权限、数据库/服务器主体信息,SSMS会结合这些数据与sys.fn_my_permissions的结果,整合出最终的有效权限展示内容。
当你在SSMS中查看某张表的有效权限时,它本质上会执行类似以下的简化脚本:
-- 示例:查询指定表的有效权限 EXEC sys.sp_executesql N'SELECT permission_name, state_desc FROM sys.fn_my_permissions(@targetObj, N''OBJECT'')', N'@targetObj nvarchar(1000)', @targetObj = N'[YourDatabase].[YourSchema].[YourTable]';
你遇到的0x5错误是Windows层面的访问拒绝问题,属于SSMS验证Windows用户身份时的异常,和核心的权限查询逻辑无关。
内容的提问来源于stack exchange,提问作者J. Mini
相关产品推荐
相关产品推荐

