| MSDE FunClub |
|
最終更新日 : 2000/10/21 |
|
Microsoft Data Engine FunClub
|
Since 2000.10.21
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(下巻) |
|
【第17章331p 〜 333p掲載】 |
-- [SQL17_11R.SQL]
-- SQLServer7.0 Transact-SQL言語
-- 日本技術ソフト開発 堀川 明
-- http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、SQL17_11プログラムで作成した
-- バックアップから、次を復元します
--
-- (1)MySampleTestデータベースの完全データベースバック
-- の復元
-- (2)トランザクションログを利用して、指定された時刻の状態
--
-- [注意]
-- このプログラムの実行は db_owner または db_backupoperator
-- の権限が必要です
--
-- ( 件処理されました)のメッセージの表示を抑止します
SET NOCOUNT ON
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)
DECLARE @pt int
DECLARE @rt datetime
--復元位置(=1,2,3)
--この時刻にデータベースの状態を復帰させます
SELECT @pt = 3
-- 復元を行う日付け時刻の設定
-- グローバルテーブルからその値を取得する
SELECT @rt = time FROM ##EndOfExecTime WHERE( POINT_NO = @pt )
-- バックアップを行うデータベースの名前
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
, STOPAT = @rt --復元時間
GO
--*******************
-- 復元内容チェック
--*******************
USE MySampleTest
PRINT ''
PRINT 'POINT-1 :社員コード10から13までです'
PRINT 'POINT-2,3:社員コード10から17までです'
SELECT 社員コード , 氏名 FROM 社員
WHERE( 社員コード BETWEEN 10 AND 20 )
--POINT-1と2では、[TEST]テーブルは存在しません
IF EXISTS( SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE( (TABLE_NAME='TEST') AND (TABLE_TYPE='BASE TABLE')) )
BEGIN
SELECT * FROM TEST
END
ELSE
BEGIN
PRINT '[TEST]テーブルは存在しません'
END
--接続先変更
USE master
GO