HOME >> Tips >> Microsoft SQL Server

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

2014/12/10
文書番号:20324

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

曜日名を付けたい場合は「バックアップコマンド実行時に任意のファイル名で保存する - 曜日名を指定してバックアップ」を参照してください。

【設定手順】

  1. バックアップファイルに日付をつけて1週間や10日などのサイクルでバックアップを行いたい場合の設定例です。
    ファイル名の後ろに日付を付加しています。
    
    --日付を表す文字列を取得
    DECLARE @DAYSTR CHAR(8) = FORMAT(GETDATE(),'yyyyMMdd')
    
    --日付時刻を表す文字列を取得
    DECLARE @DAYSTR CHAR(12) = FORMAT(GETDATE(),'yyyyMMddHHmm')
    
    --日付(日)を表す文字列を取得(1ヶ月サイクルでバックアップを取りたい場合など)
    DECLARE @DAYSTR CHAR(2) = FORMAT(GETDATE(),'dd')
    
    --日付(日)を表す文字列を取得(10日サイクルでバックアップを取りたい場合など)
    DECLARE @DAYSTR CHAR(1) = RIGHT(FORMAT(GETDATE(),'dd'),1)
    
    
    --バックアップ先フルパスを形成(c:\temp\TestDB_1.bak のようになる)
    DECLARE @BACKUP_FILE VARCHAR(50) = N'C:\temp\TestDB_' + @DAYSTR + '.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