SQL Server登录查询sys.sql_modules definition列所需权限咨询
解决sys.sql_modules中definition列返回NULL的问题
要读取sys.sql_modules的definition列内容,你需要补充以下权限之一:
服务器级权限:VIEW ANY DEFINITION
执行这条命令可以让该登录查看服务器上所有数据库的对象定义:GRANT VIEW ANY DEFINITION TO User1;这个权限是全局覆盖的,适合需要查看全服务器对象定义的场景。
数据库级权限:VIEW DEFINITION
如果只需要查看特定数据库的对象定义,针对目标数据库授予即可:GRANT VIEW DEFINITION ON DATABASE::[你的数据库名] TO User1;也可以更精细地针对单个对象授予:
GRANT VIEW DEFINITION ON OBJECT::[架构名].[对象名] TO User1;
为什么之前的权限不够?
VIEW SERVER STATE权限仅用于查看服务器级的状态类信息(比如动态管理视图里的运行状态数据),和对象定义的读取无关;db_creator服务器角色只是允许创建新数据库,并不会自动赋予查看现有数据库中对象定义的权限。
内容的提问来源于stack exchange,提问作者TheMortiestMorty
相关产品推荐
相关产品推荐

