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