HOME >> Tips >> Microsoft SQL Server

バックアップコマンド実行時に任意のファイル名で保存する - 曜日名を指定してバックアップ

2014/12/10
文書番号:20323

バックアップコマンド実行時に任意のファイル名で保存する方法です。
曜日名を指定してバックアップしてみます。

【設定手順】

  1. バックアップファイルに曜日名をつけて1週間サイクルのバックアップを行いたい場合には以下のような方法でバックアップできます。
    フォルダ内でソートしやすいようにファイル名の最初に番号をつけ、曜日を見やすいように後ろに付加しています。
    
    --曜日を表す番号を文字列で取得
    DECLARE @WEEKNO CHAR(1) = CONVERT(char,DATEPART(DW,GETDATE()))
    
    --曜日を表す文字列を取得
    DECLARE @WEEKDAY CHAR(3)
    SET @WEEKDAY = CASE DATEPART(DW,GETDATE()) WHEN 1 THEN 'SUN'
                                               WHEN 2 THEN 'MON'
                                               WHEN 3 THEN 'TUE'
                                               WHEN 4 THEN 'WED'
                                               WHEN 5 THEN 'THU'
                                               WHEN 6 THEN 'FRI'
                                               WHEN 7 THEN 'SAT'
    				END
    
    --バックアップ先フルパスを形成(c:\temp\1_TestDB_SUN.bak のようになる)
    DECLARE @BACKUP_FILE VARCHAR(50) = N'C:\temp\' + @WEEKNO + '_TestDB_' + @WEEKDAY + '.bak'
    
    --バックアップ実行
    BACKUP DATABASE [TestDB] 
      TO  DISK = @BACKUP_FILE WITH NOFORMAT, NOINIT
      ,  NAME = N'完全 データベース バックアップ'
      , SKIP, NOREWIND, NOUNLOAD,  STATS = 10
    
  2. バッチで実行する場合は以下のようにします。
    
    sqlcmd -U ユーザー名 -P パスワード -S サーバー名 -d データベース名 -i 実行するバックアップスクリプト
    
    例:
    sqlcmd -U sa -P パスワード -S localhost -d TestDB -i c:\backup.sql
    ※backup.sqlは上記バックアップスクリプトを記載したものを指定します。
    
サンプル ダウンロード

【参考情報】


[MSDN] BACKUP ステートメントと RESTORE ステートメント (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ff848768.aspx

[MSDN] BACKUP (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms186865.aspx