SQL Serverで他のサーバーのバックアップを復元したとき、ログインできなくなった
復元したデータベースのユーザーとサーバーのログインのユーザーのマッピングが不整合となっているため
ログインでユーザーマッピングを行おうとしても
「ユーザー、グループ、またはロールは現在のデータベースに既に存在します。」
というメッセージが表示されマッピングできない
不整合のあるユーザーの調べ方
Use [データベース名]
EXEC sp_change_users_login 'Report'
修正方法
Use [データベース名]
EXEC sp_change_users_login 'Update_One', 'データベースのユーザー名', 'ログインユーザー名'
上記方法は将来サポートされなくなるようです。以下の方法で修復可能です。
Use [データベース名]
ALTER USER データベースのユーザー名 WITH LOGIN = ログインユーザー名