Sql server SQL Server角色使用对象名称所需的权限

Sql server SQL Server角色使用对象名称所需的权限,sql-server,user-permissions,Sql Server,User Permissions,要获取对象\u名称和对象\u架构\u名称以返回值而不是空,我需要向SQL server数据库角色授予哪些最小权限和对象 如果有什么奇怪的地方,那么我可以只使用sys.objects和sys.schemas,但我认为使用OBJECT\u NAME和OBJECT\u SCHEMA\u NAME将是单值@@PROCID访问的更好方法。根据和的MSDN页面: 需要对该对象的任何权限。要指定数据库ID,还需要数据库的连接权限,或者必须启用来宾帐户 因此,答案是您需要对传递给函数的对象拥有任何权限。确保您确

要获取
对象\u名称
对象\u架构\u名称
以返回值而不是
,我需要向SQL server数据库角色授予哪些最小权限和对象


如果有什么奇怪的地方,那么我可以只使用
sys.objects
sys.schemas
,但我认为使用
OBJECT\u NAME
OBJECT\u SCHEMA\u NAME
将是单值
@@PROCID
访问的更好方法。

根据和的MSDN页面:

需要对该对象的任何权限。要指定数据库ID,还需要数据库的连接权限,或者必须启用来宾帐户


因此,答案是您需要对传递给函数的对象拥有任何权限。确保您确实传递了一个有效的
对象id
(类型为
INT
,应与当前或指定数据库中对象的
对象id
值相对应)当您调用函数时。

将ViewDefinition授予调用过程,该调用过程位于与调用位置不同的用户上下文中,这样做就完成了。这并不理想,因为它稍微暴露了比我们想象的更多的细节。但是,不需要其他权限。我们还修改了我们的处理程序,如果它从OBJECT_NAME返回空值,它将返回传递给它的ObjectID,这样我们至少可以手动查找它。很好,很高兴您找到了解决方案。如果我的回答有帮助,请随时标记为接受。