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
技術評論社の書籍ガイドへ
下巻:ISBN4-7741-0966-5

ウィンドウを閉じる


(株)日本技術ソフト開発 責任編集:堀川 明
MSDE FunClubに関するご意見・ご要望等ございましたら、 msdefun@horikawa.ne.jp までご連絡下さい。
HOME: http://www.horikawa.ne.jp/msde/


MSDE FunClubの運営は、マイクロソフト社とは一切の関係はありません