2010年3月24日水曜日

SQL Server 2008で初めてDBをリストアしたときの罠

自分のPCに環境を構築するさいにDBのバックアップファイル(.bak)を受け取ってリストアして利用することがままあると思う。そんな際にログインユーザ周りでうまくいかないときがあるので解説する。

初めてDBをバックアップファイルからリストアしたときに高確率で遭遇するのが、そのDBのユーザでログインできないという現象だ。下記に事例をあげる。

<例>
SouthWindというDBをリストアしたとする。SouthWindのユーザとしてdb_ownerのhogeがいる。開発中はhogeを使ってTableのデザイン変更などを行いたい。そのため、<Your PC>/Security/Loginsにhogeを追加しDefault databaseをSouthWindとする。しかし、hogeでいざログインしようとするとDefault databaseがうんたらかんたらというエラーが出てログインできない。WTF。

SouthWindのUsersにhogeが追加されていないせいかとあたりをつけて、<Your PC>/SouthWind/Security/Usersを参照するもすでにhogeがいる。すでにhogeがいるのにログインできない。WTF again。

ということがまま起こるのだが、これはLoginsのhogeと<Your PC>/SouthWind/Security/Users配下のhogeの紐付けが切れてしまっているために起こる。なので下記のクエリを実行して権限をむりくり付与してやればよい。

ALTER AUTHORIZATION ON DATABASE::SouthWind TO hoge

これで問題なくログインできるはずだ。また、まれにログインはできるがデータベースダイアグラムを作成できない場合がある。その場合も上記のクエリを実行すると解決する。

0 件のコメント:

コメントを投稿