2013年2月24日日曜日

◆バックアップ関連その他

別マシンへのデータベース移動時の注意点

別マシンへデータベースを移動する場合はオフラインバックアップを持って行ってアタッチしたり、BACKUPステートメントで取得したバックアップを移動先でRESTOREステートメントでリストアするなどの方法が使える。

復元場所を変更する MOVE .. TO

RESTOREステートメントは、そのままではもともとあった場所にデータファイルを復元しようとするが、マシンが替わってドライブ自体が存在しなかったりするとエラーになる。

そこで、「MOVE .. TO」オプションを使って「データファイル」と「ログファイル」の場所を指定してRESTOREする。
image

論理名が判らない場合は以下のコマンドで確認もできる。
image

<例>
image

GUIでの復元

また、この操作はGUIからも行える。
image

image

1と2のファイル指定ダイアログの扱いが判りづらい。
おそらく、バックアップファイルに複数のバックアップが存在し、すべてを同じフォルダにリストアするときは1を、それぞれを個別の場所にリストアするときは2を使えば良さそう。
また、ファイル名の変更が必要な場合も2で行う。

データベース移動時の注意点

データベースの移動で複製できるのは、あくまでもデータベース内のオブジェクトのみ。
image

複製できないものには以下のようなものがある。
image

ログインアカウントの複製

Webアプリでは個々にDBへのアカウントを使うこともないと思うので、あまり複製のニーズは無いのかもと思ったり・・・。

移動先で不明なデータベースユーザーとなってしまった場合は以下のコマンドでリストアップできる。
image

ログインアカウントの転送

ドメインユーザーのログインアカウントが多数あって手動登録が面倒な場合は以下のいずれかのツールを使ってログインアカウントを転送する。

  • 「データベースコピーウィザード」
  • 「ログイン転送タスク」
  • 「SQL Server オブジェクトの転送タスク」
同じパスワード/SIDのログインアカウントの作成

sp_help_revlogin という名前のストアド プロシージャで、マイクロソフトのサポート技術情報(KB:Knowledge Base)の文書番号 918992 で提供されている。
SQL Server 2005 のインスタンス間でログインおよびパスワードを転送する方法

システムデータベースのオンラインバックアップ/復元
バックアップ

「master」データベースのバックアップは通常のデータベースと同様のコマンドでバックアップすることができる。

BACKUP DATABASE master
  TO DISK = 'D:\data\BackupTest\master.bak'

復元

<システムデータベースの復元手順>

システムデータベースはそれぞれ以下の順番での復元が必要になる。
image

msdbとdistributionデータベースを復元するまでは、「SQL Server Agent」サービスなど、SQL Server 関連の他のサービスを全て停止しておく必要がある。

modelデータベース復元後は、SQL Server サービスを再起動してSQL Server関連の他のサービスを起動する。tempdbは自動的に再構築されるので復元は不要。

masterデータベースのリストア手順
  1. 「SQL Server 構成マネージャ」から、SQL Server サービスを停止する
  2. コマンドプロンプトを起動して以下のコマンドを入力(SQL Server をシングルユーザーモードで起動)

    cd C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn
    sqlservr –m


    image
  3. もうひとつコマンドプロンプトを起動して、sqlcmdユーティリティからRESTOREステートメントを実行してmasterデータベースを復元する
    image
    image
  4. 復元が成功した場合は、手順2のコマンドプロンプトから起動したSQL Serverが、自動的にシャットダウンされる。
  5. 最後に、SQL Server 構成マネージャから、SQL Server サービスを開始する
コンピュータ名が異なる別のマシンへのシステムデータベースの復元

基本的には行わない。

マシン名が同じで同じドライブ構成、同じドメイン構成にしておくのが無難。

0 件のコメント:

コメントを投稿