我正在尝试创建一个简单的存储过程,但遇到一个奇怪的错误。我是服务器上的系统管理员。
当我运行以下代码时,我收到此错误
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
答案 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。所以它是错误的触发器,而不是创建过程。
感谢您的帮助和建议。 保罗。