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