MSDE FunClub | 最終更新日 : 2000/10/06 | |
Microsoft Data Engine FunClub |
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(下巻) | ||
【第17章281p 〜 283p掲載】 |
-- [SQL17_06.SQL] -- SQLServer7.0 Transact-SQL言語 -- 日本技術ソフト開発 堀川 明 -- http://www.horikawa.ne.jp/msde/ -- -- このSQLプログラムは、 -- (1)バックアップデバイスを作成します -- (2)MySampleTestデータベースをバックアップします -- (3)MySampleTestデータベースを復元します -- -- [注意] -- このプログラムの実行は db_owner または db_backupoperator -- の権限が必要です -- -- ( 件処理されました)のメッセージの表示を抑止します SET NOCOUNT ON GO DECLARE @ret int DECLARE @mode int DECLARE @dbname varchar(20) DECLARE @bkfname varchar(80) DECLARE @bkdvname varchar(40) PRINT '' -- バックアップを行うデータベースの名前 SELECT @dbname = 'MySampleTest' -- バックアップデバイスに対応する書き込み先 -- 読み込み先のDISKのファイル名 SELECT @bkfname = 'D:\backup7\MySampleTest.DAT' -- バックアップデバイスの名前 SELECT @bkdvname = 'MySampleTest_BackupDev' -- =0 バックアップ =1 復元 SELECT @mode = 0 IF( @mode = 0 ) BEGIN --*************************************** -- 【バックアップデバイスの作成】 -- 同じ名前のデバイスがあれば削除します --*************************************** IF EXISTS( SELECT name FROM master..sysdevices WHERE( (name=@bkdvname) AND ( (status & 16)=16) ) ) BEGIN --この例題では既存のデバイスを削除しますが、 --実際は残しておきましょう EXEC sp_dropdevice @bkdvname , 'DELFILE' END --新しくバックアップデバイスを作成します EXEC sp_addumpdevice 'disk' , --DISKファイル形式です @bkdvname , --デバイスの名前 @bkfname --物理ファイル名 --************************************* -- 【完全バックアップの実行】 --************************************* --バックアップデバイスへの書き込み BACKUP DATABASE @dbname --バックアップDBの名前 TO @bkdvname --バックアップデバイス名 END IF( @mode = 1 ) BEGIN --************************************** -- 【データベースの復元操作】 --************************************** --使用中ですか? EXEC @ret = InUse @dbname IF( @ret = 1 ) BEGIN RAISERROR('%s は現在使用中です。RESTORE命令は中止です' ,0,127,@dbname) RETURN END --バックアップデバイスからの復元操作 RESTORE DATABASE @dbname --復元したDBの名前 FROM @bkdvname --バックアップデバイス WITH REPLACE --同じ名前のDBがあれば、既存を削除 END GO