MSDE FunClub | 最終更新日 : 2000/10/21 | |
Microsoft Data Engine FunClub |
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(下巻) | ||
【第17章325p 〜 327p掲載】 |
-- [SQL17_10R.SQL] -- SQLServer7.0 Transact-SQL言語 -- 日本技術ソフト開発 堀川 明 -- http://www.horikawa.ne.jp/msde/ -- -- このSQLプログラムは、SQL17_10プログラムで作成した -- バックアップから、次を復元します -- -- (1)復旧作業を始める前のログを保存します -- (2)データベースの復元 -- (3)ログの適用 -- -- [注意] -- このプログラムの実行は db_owner または db_backupoperator -- の権限が必要です -- -- ( 件処理されました)のメッセージの表示を抑止します SET NOCOUNT ON GO --*************************************************** -- 復旧を行う前にログのバックアップを取る -- この中に3レコード分の情報があります --*************************************************** DECLARE @dbname varchar(20) DECLARE @bkdvname varchar(40) -- バックアップを行うデータベースの名前 SELECT @dbname = 'MySampleTest' -- バックアップデバイスの名前 SELECT @bkdvname = 'MySampleTest_BackupDev' --ログを保存します BACKUP LOG @dbname --ログのバックアップDBの名前 TO @bkdvname --バックアップデバイス名 WITH DESCRIPTION = '最終3レコード分のログです' , NO_TRUNCATE --このオプションを忘れずに --書籍掲載プログラムでは抜けています GO --***************************************** -- 【MySampleTestデータベースを削除】 --***************************************** IF EXISTS( SELECT name FROM master..sysdatabases WHERE( name = 'MySampleTest' ) ) BEGIN DROP DATABASE MySampleTest END GO --***************************************** -- 【データベースの復元】 --***************************************** DECLARE @dbname varchar(20) DECLARE @bkdvname varchar(40) -- バックアップを行うデータベースの名前 SELECT @dbname = 'MySampleTest' -- バックアップデバイスの名前 SELECT @bkdvname = 'MySampleTest_BackupDev' --************************ -- 完全データベースの復元 -- ファイル番号1番です --************************ RESTORE DATABASE @dbname --復元したDBの名前 FROM @bkdvname --バックアップデバイス WITH FILE = 1 , NORECOVERY --忘れずに!! --**************************** -- トランザクションログの復元 -- ファイル番号2番です --**************************** RESTORE LOG @dbname --ログを適用するDBの名前 FROM @bkdvname --バックアップデバイス WITH FILE = 2 , NORECOVERY --忘れずに!! --**************************** -- トランザクションログの復元 -- ファイル番号3番です --**************************** RESTORE LOG @dbname FROM @bkdvname WITH FILE = 3 , RECOVERY --復元完了です GO --******************* -- 復元内容チェック --******************* USE MySampleTest PRINT '' PRINT '社員コード10から20までです' SELECT 社員コード , 氏名 FROM 社員 WHERE( 社員コード BETWEEN 10 AND 20 ) --接続先を変えておきます USE master GO