SQL Server 数据库:找不到明确存在的对象
Posted
技术标签:
【中文标题】SQL Server 数据库:找不到明确存在的对象【英文标题】:SQL Server database: Can't find an object which clearly exists 【发布时间】:2017-03-17 06:05:31 【问题描述】:编辑:如何赋予用户定义类型 exec 权限?
看起来“Bug2”是用户定义的类型。
select * from sys.types
where is_user_defined = 1 and name = 'Bug2'
现在要摆脱这个错误:
"对象'Bug2'的EXECUTE权限被拒绝,数据库 '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”,因此会引发错误。
谁能帮忙?
【问题讨论】:
,Bug2 什么样的类型。 【参考方案1】:好的。使用它可以正常工作:
GRANT EXECUTE ON TYPE::Bug2 to PUBLIC
谢谢!
【讨论】:
【参考方案2】:不要使用sys.types
,而是使用sys.objects
。如果Bug2
是一个表,那么查询看起来像:
SELECT * FROM sys.objects WHERE name='Bug2' AND type='U'
【讨论】:
【参考方案3】:这是一个user-defined table type(通常用于表值参数)。查看 db_nm > programmability > types > user-defined table types,您将看到一个 bug2
对象。您可以解决该对象的权限问题(通过脚本或 GUI)。
脚本选项:
use [abc]
GO
GRANT EXECUTE ON TYPE::[dbo].[bug2] TO [public]
【讨论】:
以上是关于SQL Server 数据库:找不到明确存在的对象的主要内容,如果未能解决你的问题,请参考以下文章
装了VS2008后SQL SERVER服务器找不到,SQL SERVER配置工具中也没东西
在 SQL Server 2012 中出现以下错误“找不到用户 '<user>',因为它不存在或您没有权限”
SQL Server Management Studio 17找不到一个或多个组件