DBAtlas · データベース運用アトラス

15151: Cannot find the object/principal because it does not exist or you do not have permission(オブジェクト/プリンシパルが存在しないか権限がないため見つからない)

SQL Server

意味

参照したオブジェクトまたはセキュリティプリンシパル (ユーザー、ロール、ログイン) が存在しないか、それにアクセス/操作する権限がない。セキュリティ上の理由から、SQL Server は両方のケースを 1 つのメッセージにまとめている。

原因

GRANT/ALTER/DROP などのコマンドで存在しないユーザー、ロール、スキーマ、オブジェクト名を使用した、誤ったデータベースコンテキストで実行した (オブジェクトは別の DB にある)、または操作に必要な権限がない。タイプミス、大文字小文字、スキーマプレフィックスがよくある原因。

対処方法

オブジェクト/プリンシパル名の綴りが正しいこと、正しいデータベースにいることを確認する。ユーザーの場合: SELECT name, type_desc FROM sys.database_principals; オブジェクトの場合は sys.objects を照会する。実行アカウントに必要な権限 (例: ALTER ANY USER、CONTROL) があることを確認する。正しいスキーマプレフィックス (dbo.object など) を使用する。

DBAtlas で開く →

同じデータベースの他の項目