全て:
発生した問題について、数時間検索しました。Google と here に同様の質問がありますが、同じものはありません。
単純なストアド プロシージャ A があり、EXECUTE 権限がログインに正しく付与されています。基本的に、いくつかのテーブルにデータを入力します。ログインユーザーと同じスキーマにあります。正常に実行できます。つまり、すべてのデータが期待どおりに入力されます。ただし、実行の最後に、メッセージ ウィンドウに次のように表示されます。
メッセージ 15151、レベル 16、状態 1、プロシージャ A、行 xxx オブジェクト 'A' が見つかりません。オブジェクトが存在しないか、権限がないためです。
行番号は SP 定義の終わりを指します。このエラー メッセージが表示される理由はわかりませんが、SP の実行結果はまったく問題ないようです。
編集:
SP コードは次のようになります。
IF EXISTS (SELECT * FROM SysObjects WHERE id = OBJECT_ID('dbo.spA') AND type = 'P')
DROP PROCEDURE dbo.spA
GO
CREATE PROCEDURE dbo.spA
@ReportCCY as char(3) = 'GBP',
@Date as date = null /* for regression testing */
AS
BEGIN
if (@Date is null)
select @Date = convert(varchar(20), max(VDate), 112) from JB H (nolock)
declare @dbname as varchar(50)
select @dbname = DB_NAME()
exec DBA_admin.App.p_usr_Truncate @DB=@dbname, @Schema='dbo', @Table='ATable'
insert into dbo.ATable
select r.Value, I.id
from Rates r
join Inst I (nolock) on I.idCCyBase = r.idHold and r.ccyinto = @ReportCcy and r.dtDate = @Date
END
GRANT EXECUTE ON dbo.spA TO UserGrp
GO