稼働中の社内システムに変更を入れるためにDBを複製することにした。

SQL Server Express 2005を使用しているが、バックアップはすぐにできるし、違うDBへも復元は可能。

問題は、ログインユーザーの復元

これは、基本的にできないと考えた方がよさそう。ログイン情報などの入ったmasterをバックアップして復元を試みるが、「Build番号が違う」と怒られる。「Build番号」を調べてみるが、本番機が3180で、さっきインストールしたDBが2900?テスト用はSP3で本番機はSP2?さんざんググってみたもののBuild番号が違うと絶対に復元できないらしい?

と言うわけで手動ならどうするのか?

結局のところ、ログイン認証がADなら手動でも簡単にできそう。でも、SQL認証なんだな。

SQL認証の場合、ログイン名で管理しているのではなくSIDで管理しているらしい。ということは、SIDが同じでないとセキュリティの設定が反映できないということ?

まず、DBにあるユーザーでログイン アカウントを持っていない人を表示させてみる。

USE データベース名

EXEC sp_change_users_login 'Report'

go

これで出てくるユーザーのことを「不明なデータベースユーザー」というらしい。

この不明なユーザーに割り当てるSQLへのログインアカウントを作成して、SIDとマッピングさせてやる必要がある。

「SQLへのログインアカウント」を作成し、マッピングを更新するために次のスクリプトを実行

use データベース名

exec sp_change_users_login 'Update_One' , 'DBにあるユーザー名' , '作成したユーザー名'

go

くわしくはこちら

おすすめの記事