しかし、ユーザを削除するときに、エラーが発生し削除できないことがある。
以下、実際の業務で出会ったら2つのエラーについて、その原因と対処法をまとめる。
※SQL Server Management Studioで操作することが前提
- Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。
- データベース プリンシパルは、データベースの スキーマ を所有しているので、削除できません。
1. Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。
Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。
原因
[ログインのプロパティ - sa]ダイアログボックスの[全般]タブで[資格情報にマップ]のチェックがオフになっている場合に発生する。対処法
2.[ログインのプロパティ - sa]ダイアログの[全般]タブで、[資格情報にマップ]のチェックをオンにする
3.対象ユーザを削除する
2.データベース プリンシパルは、データベースの スキーマ を所有しているので、削除できません。
ユーザー 'hoge' の削除に失敗しました。 (Microsoft.SqlServer.Express.Smo) Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.Express.ConnectionInfo) データベース プリンシパルは、データベースの スキーマ を所有しているので、削除できません。 (Microsoft SQL Server、エラー: 15138)
原因
「このユーザーが所有するスキーマ」にチェックを入れると、そのスキーマのOwnerになってしまうため、ユーザを削除できなくなる。チェックボックスも非活性になり、解除できない。対処法
1.[セキュリティ]→[ログイン]→[sa]のプロパティを開く
2.「ユーザーマッピング」タブでユーザにマッピングされたデータベース(スキーマ)を確認する
3.[データベース]→2.で確認したデータベース→[セキュリティ]→[スキーマ]→2.で確認した規定のスキーマ のプロパティを表示する
4.[全般]タブからスキーマの所有者を適当なユーザ(dboなど)に変更し、一時的に所有権を渡す
5.対象ユーザを削除する
0 件のコメント :
コメントを投稿