環境
OS WIN2003SP1EE
DB SQLサーバー2000SP3A
みなさん教えてください。
DBのバックアップ(SQLサーバー2000のバックアップ機能を使用して)を毎日取得しています。
(30日分 1ヶ月とる理由として調査等で必要のため)(取得DB、モデルDB(システムDB)
マスターDB(システムDB)))
これを、保守機(WIN2003、SQL2000SP3Aソフトは同じ)にDBのバックアップをリストする方法
がわかりません。本番機のDBのバックアップを戻すのは問題がないのですが、他のサーバーに
戻す方法がわかりません。
あと、SQL2000はオラクルみたいに、テーブル単位にリストアする方法はないのでしょうか。
よろしくお願いします。
http://www.microsoft.com/japan/technet/prodtechnol/sql/2000/book...
SQL Server 2000 管理者用ポケット コンサルタント : 第 11 章 ‐ データベースのバックアップと復旧
的外れ・役に立たなかったら申し訳ありません。
テーブル単位のリストア方法があるのかは調べてもわかりませんでしたが、
他のサーバーに戻すには次の方法を使えばできます。
復元のリストに載せるには、msdbのバックアップも必要そうでしたが、
こちらはバックアップを取っていないようなので、
リストに戻せないことを前提として書いてみます。
URLは参考までに・・
(おそらく、テーブル単位リストアはできないのではないかと思います)
まず、復元したいバックアップファイルを対象サーバーにコピーしておきます。
バックアップファイルの場所は、普通はMSSQLフォルダのBKUPフォルダの中です。
わからない場合、データベースを右クリックして[すべてのタスク]→[データベースのバックアップ]を選び、
出力先を確認してみてください。
復元したいファイルを対象サーバーにコピーしたら、
データベースを右クリックし、[すべてのタスク]→[データベースの復元]をします。
[全般]タブの[復元]ラジオボタンで、[デバイスから]を選びます。
[デバイス選択]ボタンを押して、復元対象のバックアップファイルを選択してください。
その後、[データベースとして復元]のところが、希望のデータベースになっているか確認します。
すでに同名のデータベースが存在している場合、[オプション]タブの[既存のデータベースに強制的に復元]を選びます。
また、その下の[物理ファイル名に移動]のところには、保守機でのデータファイルの場所を入れます。
例えば、[C:¥Program Files¥Microsoft SQL Server¥MSSQL¥Data¥TEST.mdf]など。
これは、データベースのプロパティを開いて、[データファイル]タブの[場所]というところを見れば分かります。
保守機と本番機が同じ構成なら変える必要はありません。
そして、あとはデフォルトで[OK]を押せば復元開始です。
ただ、これはフルバックアップを戻す方法なので、
そのあと差分がある場合には、
[復旧完了状態]を下の2つどちらかにしてください。
そのあとに差分のファイルをどんどん同じ方法で復元していきます。
その時は、[全般]タブの[バックアップセットの復元]を[データベース-差分]にするようにします。
最後のものを復元する時だけ、[復旧完了状態]を一番上のものにします。
http://network.station.ez-net.jp/server/microsoft/sql/7backup.as...
EZ-NET レポート: データベースの保守について調べてみる
http://support.microsoft.com/default.aspx?scid=kb;ja;314546
SQL Server を実行しているコンピュータ間でデータベースを移動する方法
バックアップで取られたファイルを保守機に持ってきて、手動でリストアするのが一番楽です。
恐らくこのHOWTOで事足りると思います。
http://www.microsoft.com/japan/msdn/sqlserver/columns/dts/dts2.a...
第 2 章 「DTS インポート/エクスポートウィザード」 〜 DTS 編 〜
テーブルのリストアというのは基本的にはできませんが、テーブルのDB間移動でまかなうのはいかがでしょうか。
あとは、設計時に大量データを扱うデータベースを分けておくとか(それができれば最初から楽なんですけどね)。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...
MSDN ライブラリ サイト移行に関する重要なお知らせ
自動化してスケジュール実行することを前提で、コメントにお答えします。
RESTORE文は、基本的にRESTOREコマンドを実行する対象となるデータベースが存在するPC上のファイルに対して行います。従って、他のマシンで取ったバックアップに対してリモートでリストアを実行するためには、ネットワーク共有経由でリモートファイルが読み取りできるようにしておく必要があります。
これを踏まえたファイル名の指定方法は、RESTOREコマンドのFROM句で下記のように参照します。
(例:hogeというマシンで作成されている共有: ¥¥hoge¥BACKUP上にあるファイル:Mybackup.datを読みにいく場合)
--
RESTORE LOG [dbname] FROM DISK = ’¥¥hoge¥BACKUP¥Mybackup.dat’
(以下略)
--
なお、RESTORE 操作を実行するには、SQL Server の実行に使用するアカウントが、リモート コンピュータまたはネットワーク サーバーへの READ アクセスを持つ必要があります。
アカウント関係をいじるのが難しければ、DTSのFTPタスクを使って、FTP経由で一度保守DBのローカルハードディスク上にファイルをGETしてきてから、RESTOREをするのでも設計が楽だと思います。
なお、手動で1回1回移動をするのでもよいのであれば、ここで説明したRESTOREコマンドを使うよりも、1番でreatanさんが回答されているEnterprise Managerを使った方法のほうが圧倒的に楽だと思いますのでご留意ください。
教えてください。
他のサーバーを指定する場合リストアの構文でどこを
指定すればよいですか。
構文
データベース全体を復元する場合
RESTORE LOG { database_name | @database_name_var }
[ FROM < backup_device > [ ,...n ] ]
[ WITH
[ RESTRICTED_USER ]
[ [ , ] FILE = { file_number | @file_number } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] MOVE ’logical_file_name’ TO ’operating_system_file_name’ ]
[ ,...n ]
[ [ , ] KEEP_REPLICATION ]
[ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] REPLACE ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]