SQL Server错误创建存储过程

时间:2012-05-18 10:03:59

标签: sql-server sql-server-2008

我正在尝试创建一个简单的存储过程,但遇到一个奇怪的错误。我是服务器上的系统管理员。

当我运行以下代码时,我收到此错误

  

Msg 15151,Level 16,State 1,Line 1
  找不到对象'保罗',因为它不存在或者你不存在   有权限。声明已经终止。

我可以在dbo架构中创建过程,然后将其传输到架构中。我在2008年的几个不同的安装(R1& R2)上尝试了这个,它有时可以工作,但大多数情况下没有。

有没有人有任何建议?谢谢保罗。

if not exists (Select * from sys.schemas Where name = 'Test')
    Exec ('Create Schema Test Authorization dbo')

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Test].[Paul]') AND type in (N'P', N'PC'))
    DROP PROCEDURE [Test].[Paul]
GO

Create Procedure Test.Paul
As
    Select @@ServerName
GO

Create Procedure dbo.[Paul]
As
    Select @@ServerName
GO

Alter Schema Test Transfer dbo.Paul

exec Test.Paul1

IF  EXISTS (SELECT * FROM sys.schemas WHERE name = N'Test')
    DROP SCHEMA [Test]
GO

2 个答案:

答案 0 :(得分:0)

SPE109,检查是否可以改变现有的Test.Paul sp。请验证登录用户的Alter / Dropping权限。

使用以下语句授予权限

GRANT EXEC ON some_sp TO uname-- Grant permission on a single procedure.
GRANT EXEC ON SCHEMA::dbo TO uname -- Grant perpmission on all procedures in
                                      the dbo schema

GRANT CREATE TABLE TO uname

GRANT ALTER ON SCHEMA::dbo TO uname

现在尝试删除SP

答案 1 :(得分:0)

很抱歉浪费你的时间,似乎有人已经设置了数据库级别的触发器,它没有正确处理Schema。所以它是错误的触发器,而不是创建过程。

感谢您的帮助和建议。 保罗。