15138: The database principal owns a schema in the database, and cannot be dropped(データベースプリンシパルがスキーマを所有しているため削除できない)
SQL Server意味
データベースユーザー/ロール (データベースプリンシパル) を削除しようとしたが、そのプリンシパルがデータベース内の 1 つ以上のスキーマを所有しているため削除できなかった。所有するスキーマを別のプリンシパルに移すまで削除できない。
原因
削除しようとしているユーザーが少なくとも 1 つのスキーマの OWNER である (例: デフォルトで自身の名前で作成されたスキーマ、または AUTHORIZATION で割り当てられたスキーマ)。SQL Server は孤立したスキーマが残るのを避けるため削除をブロックする。
対処方法
ユーザーが所有するスキーマを特定する: SELECT name FROM sys.schemas WHERE principal_id = USER_ID('app_user'); これらのスキーマの所有権を別のプリンシパル (例: dbo) に移す: ALTER AUTHORIZATION ON SCHEMA::[app_schema] TO dbo; スキーマが不要 (かつ空) であれば DROP SCHEMA を実行する。所有権を移した後、DROP USER を再実行する。
同じデータベースの他の項目
- 8651Could not perform the operation because the requested memory grant was not available(要求されたメモリ許可が利用できないため操作を実行できない)
- 5061ALTER DATABASE failed because a lock could not be placed on database(データベースにロックを設定できないため ALTER DATABASE が失敗)
- 3702Cannot drop database because it is currently in use(データベースは使用中のため削除できない)
- 1934INSERT/UPDATE failed because the following SET options have incorrect settings(次の SET オプションの設定が誤っているため INSERT/UPDATE が失敗)
- 468Cannot resolve the collation conflict(照合順序の競合を解決できない)
- 4864Bulk load data conversion error (type mismatch or invalid character)(一括読込みのデータ変換エラー (型の不一致または無効な文字))
- 916The server principal is not able to access the database under the current security context(サーバープリンシパルは現在のセキュリティコンテキストでデータベースにアクセスできない)