データベースのユーザーを削除しようとした時下記のようなエラーが発生し、ユーザーが削除されない!!!
ユーザー 'TestUser' の削除に失敗しました。 (Microsoft.SqlServer.Express.Smo)
Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.Express.ConnectionInfo)
データベース プリンシパルは、データベースの スキーマ を所有しているので、削除できません。 (Microsoft SQL Server、エラー: 15138)
それで「Testuser」のプロパティを確認してみたらスキーマに「db_datareader」が設定されていました。
ユーザーが削除されない原因はエラーメッセージーにも書いてありますが、
削除しようとするユーザーがスキーマの所有者に設定されているため削除ができないわけです。
私の場合、「db_datareader」のスキーマの所有者に削除しようとした「TestUser」が設定されており削除ができませんでした。
では、スキーマの所有者を変更しましょう。
上記の画面で「検索」ボタンを押して変更もできますが、今回はSQL文を利用して変更したいと思います。
ALTER AUTHORIZATION ON SCHEMA::[スキーマ名] TO [スキーマ所有者]
GO
つまり、現在の設定だと下記のように設定されていることです。
ALTER AUTHORIZATION ON SCHEMA::db_datareader TO TestUser
GO
これを下記のように「db_datareader」の元の所有者の「db_datareader」に変更しましょう。
ALTER AUTHORIZATION ON SCHEMA::db_datareader TO db_datareader
GO
変更が完了したら「db_datareader」スキーマのプロパティを確認し、変更されているか確認しましょう。
問題なく変更されていますね。
では、問題が発生していたユーザーを削除しましょう。
また他のスキーマの所有者に設定されていない限り、正常に削除されると思います。
他にご不明な点がありましたら「Q&A」掲示板に投稿してください。