【发布时间】:2010-12-08 18:19:34
【问题描述】:
调用存储过程时出现以下错误:
找不到对象“XXX”,因为它不存在或您没有权限。
我已经检查了数据库,并且 SP 具有正确的权限,但我仍然收到错误消息。
有什么建议吗?
【问题讨论】:
标签: sql-server stored-procedures permissions
调用存储过程时出现以下错误:
找不到对象“XXX”,因为它不存在或您没有权限。
我已经检查了数据库,并且 SP 具有正确的权限,但我仍然收到错误消息。
有什么建议吗?
【问题讨论】:
标签: sql-server stored-procedures permissions
您在调用存储过程时使用的帐户不能与您用于检查它的帐户相同。确保您用于执行存储过程的帐户有权访问该对象。
【讨论】:
【讨论】:
以及关于架构/安全等的其他答案:
【讨论】:
好的,这就是发生的事情。在 SP 结束之前有一个特殊字符,所以它不完整但仍然有效,不知何故。
所以我可以看到 SP 并看到它的权限,但我无法运行它。因此,为了解决这个问题,我不得不将文本从 SQL Management Studio 中复制出来并粘贴到记事本中,然后删除特殊字符,然后将其复制并粘贴回 SQL Management Studio 并运行更改脚本。
很奇怪这个角色是怎么到那里的!
【讨论】:
类似于标记答案: 我的存储过程的最后一行是授予存储过程以适当用户身份运行的权限的行 - 可能是在我生成脚本时添加的。
删除那个(或者可能是附加的隐藏字符)设法修复它。
“XXX”是我成功调用的存储过程的名称(它进行了所需的更改),但它给了我这个错误。
【讨论】:
我发现我在存储过程中遗漏了“END”之后的“GO”字样。更改 Proc 并添加回 GO 为我解决了这个问题。
【讨论】:
我也遇到了这个问题。就我而言,我在创建存储过程后授予了执行权限。并且两个语句之间没有“GO”。我添加了 GO,它可以工作。
【讨论】:
使用“GO”也为我解决了这个问题。这让我发疯了,在多次删除并检查用户和架构的权限之后,这就是最终的帮助。
【讨论】:
在 Microsoft SQL Server 中,在对象资源管理器中选择要使用的对象,右键单击它,然后执行“Script [object] as”可以为您提供成功执行操作所需的脚本而无需获取这个错误
【讨论】:
即使添加了“GO”,我也没有解决问题。然后删除 UPDATE STATISTICS [Table_name] 语句然后我的问题得到解决。
【讨论】:
方案可能不同。如果有不同的方案,请将其添加到它的前面。
【讨论】:
可能是拼写错误或已被删除?刷新您的视图或查询它(看起来这是一个存储过程):
SELECT name AS procedure_name
,SCHEMA_NAME(schema_id) AS schema_name
,type_desc
,create_date
,modify_date
FROM sys.procedures;
然后,如果它已列出,请复制名称并尝试使用从这些结果中获取的名称进行查询(或以您可能熟悉的任何其他方式复制对象的名称)。
针对任何对象的更通用的解决方案(如果您有 SSMS): 在 SQL Server Management Studio 中,右键单击对象,“将 [OBJECT_TYPE] 编写为”,DROP To(或您正在尝试的操作),新建查询编辑器。
如果你能成功运行这个,你可能有一个错字。
【讨论】:
如果在您的存储过程中有 SET IDENTITY ON & OFF 语句,那么您需要为用户登录添加 ddl_admin 权限。这是我的解决方案。
【讨论】: