データベースを移行したらログインが出来なくなったときの解決方法【SQL Server編】
こんにちは!システムオペレーション部の「なべ」です!
今回は、以前、SQL Server 2008からSQL Server 2012へデータベースを移行した際に、初心者の私がつまずいてしまった事象と解決方法を紹介します。
SQL Server 2008からリストア作業が終わり、SQL Server 2012へ復元。
管理者以外のログインユーザーを追加した際に事件が起きました。
「追加したユーザーでログイン出来ない」
ユーザー情報は、以前のSQL Server と同じ設定をしています。
なぜ、ログインができないのでしょうか?
解決するには?
まずは一通り、設定を確認してみましょう。
・データベースへの接続権限があるか?
※今回はデータベース名を「TESTDB」
ユーザーを「TESTUSER」として設定を行います。
「データベースのプロパティ」から接続権限を確認しましょう。[接続]の許可欄にチェックが入っていれば問題ありません。
※赤枠部分参照
・ユーザーの状態はどのように設定されているか?
まずはTESTUSERの「ユーザーマッピング」を確認。
TESTDBに対してTESTUSERが設定されています。
次に、TESTUSERの「状態」。
「データベースエンジンに接続する権限」に[許可]が入ってれば問題はなさそうですが、「状態」が[SQL Server認証]になっている場合は、認証方式を確認します。
「サーバーのプロパティ」の「セキュリティ」より、サーバ認証を確認し、[SQL Server認証モードとWindows認証モード(S)]にチェックが入っていれば、認証モードの整合性が取れています。
上記のを確認し、何も問題が見つからなければ・・・
「復元元と同じユーザーを設定しても、別ID管理されているため、正常にマッピングされない。」
原因はこれである可能性が高いと思われます。
解決策は、再マッピングすること。
※マッピングとは・・・「関連付けること」
今回であれば、TESTDBとTESTUSERを再度関連付ける。
以下のSQLを実行するとログイン出来るはずです。
USE TESTDB EXEC sp_change_users_login 'Update_One','[現在データベースに登録してあるユーザ名]','[ログインしたいユーザー名]'
今回のケースだと以下のようになります。
USE TESTDB EXEC sp_change_users_login 'Update_One','TESTUSER','TESTUSER'
これで解決できたでしょうか?
目に見えている部分が全てではないという事を思い知らされ、記事の内容以上に、苦しめられた事象でした。
同じ事象でつまずいている方がいたら、ぜひ参考にしていただければと思います。