| MSDE FunClub |
|
最終更新日 : 2000/10/06 |
|
Microsoft Data Engine FunClub
|
Since 2000.10.06
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(下巻) |
|
【第17章287p 〜 289p掲載】 |
-- [SQL17_07R1.SQL]
-- SQLServer7.0 Transact-SQL言語
-- 日本技術ソフト開発 堀川 明
-- http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、SQL17_07プログラムで作成した
-- バックアップから、次を復元します
--
-- (1)MySampleTestデータベースの完全データベースバック
-- の復元
-- (2)差分バックアップ情報は一切考慮しません
--
-- [注意]
-- このプログラムの実行は db_owner または db_backupoperator
-- の権限が必要です
--
-- ( 件処理されました)のメッセージの表示を抑止します
SET NOCOUNT ON
GO
--*********************************
-- MySampleTestデータベースの削除
--*********************************
DECLARE @ret int
DECLARE @dbname varchar(20)
SELECT @dbname = 'MySampleTest'
EXEC @ret = master..InUse @dbname
IF( @ret = 1 )
BEGIN
RAISERROR('%s は現在使用中です。RESTORE命令は中止です'
,0,127,@dbname)
RETURN
END
--InUseはデータベースの存在チェックまでは行わない
--存在したら削除します
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
GO
--*******************
-- 復元内容チェック
--*******************
USE MySampleTest
GO
IF EXISTS( SELECT 社員コード FROM 社員
WHERE( 社員コード BETWEEN 10 AND 13 ) )
BEGIN
RAISERROR('エ?このレコードが存在してはおかしい!!',16,127)
RETURN
END
IF EXISTS( SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE( (TABLE_NAME='TEST') AND (TABLE_TYPE='BASE TABLE')) )
BEGIN
RAISERROR('エ?このテーブルが存在してはおかしい!!',16,127)
RETURN
END
PRINT ''
PRINT 'MySampleTestの差分を考慮しない復旧ができました'
GO