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

時間を無駄にして申し訳ありませんが、誰かがスキーマを適切に処理しないデータベースレベルのトリガーを設定したようです。したがって、エラーが発生しているのはトリガーであり、作成プロシージャではありません。

あなたの助けと提案をありがとう。ポール。

于 2012-05-18T10:40:17.317 に答える
0

SPE109、既存のTest.Paulspを変更できるかどうかを確認します。ログインユーザーの変更/削除権限を確認してください。

次のステートメントを使用して許可を付与します

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 に答える