1

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

当我运行以下代码时,出现此错误

消息 15151,级别 16,状态 1,行 1
找不到对象“Paul”,因为它不存在或您没有权限。该语句已终止。

我可以在 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
4

2 回答 2

0

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

使用以下语句授予权限

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

于 2012-05-18T10:09:03.633 回答
0

很抱歉浪费你们的时间,似乎有人放置了一个不能正确处理 Schema 的数据库级触发器。所以出错的是触发器而不是创建过程。

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

于 2012-05-18T10:40:17.317 回答