布団が俺を呼んでいる

丘山大一のぶろぐ

SQL Server の MDF,LDF を差し替える

SQL Serverが入っているマシンが壊れたけど、バックアップが無いよ!
という時に、壊れたマシンハードディスクからMDFファイルとLDFファイルだけなんとか引っこ抜いて、確認のために、自分の環境に復元、なんてことをすることがあります。
(え? ありませんか?)
この時、フツーにManagement Studioからアタッチできれば楽勝なのですが、他のアプリやらユーザやらの関係で、「環境作るの面倒だし、既存のMDFとLDFと差し替えて動かしたい」ということがちょいちょいあります。
基本的には、下記の手順で実行可能(だと思う)。

1.構成マネージャからインスタンスのサービスを停止。
2.MDF、LDFファイルを差し替える。

で、ここからが本題。
ファイルを預かる時は、
大概ネットワーク経由
かつマシンの状態がこちらと同一ではありません。
なので、プロパティからセキュリティを確認すると、うまく動かない設定になっていることがちょいちょい。
なのでファイルプロパティを最低限整えます。

3.「他のコンピューターから取得した~」のブロックを外す
4.必要な、あるいは足りないユーザ権限をくっつける
 やり方は、ファイルのプロパティ - セキュリティタブ - 編集 から、「ほげほげのアクセス許可」ダイアログを開く。
 「追加」ボタンからユーザをくっつける。
 「オブジェクトの種類」は、よく分からなければ全部チェック。
 「場所」は、状況によりけりですが、AD環境のユーザを追加するのでなければコンピュータ名を選べばだいたいOK。
 このとき、ユーザは一生懸命入力して探すよりも、「詳細設定」ボタンを開いて、「検索」から抽出する方が楽。
 というより、ここでは自分の環境に復元する=ローカルマシン登録されているユーザくらいなら、絞り込まなくても大丈夫という理屈。
 追加したら、あとはそのユーザに権限を付与。ローカルでちょいと動かすだけなら、何も考えずにフルコントロールを振っておく。
 個人的によく追加するのは、
(1) SQL Server のユーザ(SQL で始まっているヤツ)
(2) NETWORK SERVICE
 のふたつ。
5.構成マネージャからインスタンスのサービスを再開。

これで何事もなかったかのよーに差し替えが完了します。

多分ね!
(全然調べずに、経験則でやるというプログラマにあるまじき方法の紹介でした)

コメントを書く