无法在 dbo 模式中执行存储过程

Posted

技术标签:

【中文标题】无法在 dbo 模式中执行存储过程【英文标题】:Unable to execute stored procedure in the dbo schema 【发布时间】:2012-07-31 11:39:28 【问题描述】:

我使用 Windows 身份验证连接到 SQL Server。我在dbo 模式中创建了一个存储过程。当我尝试在 SSMS 中执行该存储过程时,出现以下错误

对象“sp_test”,数据库“myDB,schema = dbo”的执行权限被拒绝

这里需要做什么?

为什么我需要为我创建的存储过程授予权限?

【问题讨论】:

sp_ 是 MS 提供的程序的保留前缀。你应该避免在你自己的存储过程中使用这样的前缀(并且,通常,避免任何前缀) 【参考方案1】:

是否创建了存储过程并不重要。 SQL Server 不使用 Windows 身份验证来确定您是否有权执行存储过程。它仅使用它来授予您连接到服务器的权限。连接后,您需要将 Windows 帐户映射到相应数据库中的用户。完成此操作后,您通常希望自己成为数据库角色的成员(创建新角色或使用预定义角色之一),然后向您所属的角色授予执行权限。这确保了该角色的任何成员都可以继续执行存储过程。

【讨论】:

to a Login in the respective database 我想你的意思是用户。

以上是关于无法在 dbo 模式中执行存储过程的主要内容,如果未能解决你的问题,请参考以下文章

msdb.dbo.sp_send_dbmail 不在存储过程中执行

如何为用户(已经 dbo)授予存储过程的执行权限以运行 s-s-rS 报告

sqlserver利用存储过程去除重复行的sql语句

无效的对象名称'dbo.sp_GetCustomerRequestReport'。执行存储过程时

用户可以创建但不能执行存储过程

除插入语句外,存储过程工作正常