| MSDE FunClub |
|
最終更新日 : 2000/10/21 |
|
Microsoft Data Engine FunClub
|
Since 2000.10.21
|
|
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