SQL Server数据库:Can';我找不到明显存在的物体

SQL Server数据库:Can';我找不到明显存在的物体,sql,sql-server,tsql,sql-server-2012,Sql,Sql Server,Tsql,Sql Server 2012,编辑:如何向用户定义的类型授予exec权限 看起来“Bug2”是用户定义的类型 select * from sys.types where is_user_defined = 1 and name = 'Bug2' 现在要消除此错误,请执行以下操作: 对数据库“Bug2”对象的执行权限被拒绝 “abc”,模式“dbo” 我应该使用什么命令 我只是在玩弄别人的代码,突然遇到了这样一个问题: 如果我这样做 DECLARE @bugList Bug2 SELECT * FROM @bugLis

编辑:如何向用户定义的类型授予exec权限

看起来“Bug2”是用户定义的类型

select * from sys.types
where is_user_defined = 1 and name = 'Bug2'
现在要消除此错误,请执行以下操作:

对数据库“Bug2”对象的执行权限被拒绝 “abc”,模式“dbo”

我应该使用什么命令


我只是在玩弄别人的代码,突然遇到了这样一个问题:

如果我这样做

DECLARE @bugList Bug2

SELECT * 
FROM @bugList
那我就有结果了

但如果我这样做了

SELECT * 
FROM Bug2
然后我得到一个

无效的对象名称“Bug2”

这是怎么回事

基本上,我正在尝试运行一个使用此“Bug2”的存储过程,由于存在一些权限问题,我在运行它时遇到以下错误:

对对象“Bug2”、数据库“abc”、架构“dbo”的执行权限被拒绝

所以我想做的就是:

GRANT EXEC ON Bug2 TO PUBLIC
但是SQL Server无法找到这个对象“Bug2”,因此抛出了一个错误


有人能帮忙吗?

好的。使用以下工具使其正常工作:

GRANT EXECUTE ON TYPE::Bug2 to PUBLIC

谢谢

不使用
sys.types
而使用
sys.objects
。如果
Bug2
是一个表,则查询如下所示:

SELECT * FROM sys.objects WHERE name='Bug2' AND type='U'
它是一个(通常用于表值参数)。查看db_nm>可编程性>类型>用户定义的表类型,您将看到一个
bug2
对象。您可以解决该对象上的权限问题(通过脚本或GUI)

脚本选项:

use [abc]
GO
GRANT EXECUTE ON TYPE::[dbo].[bug2] TO [public]

,Bug2是什么类型的。