スケジュールおよび SQL Server の高速 SQL Server のデータベースのバックアップを自動化する方法

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:2019698
概要

SQL Server の Express エディション SQL Server エージェント コンポーネントは、これらのエディションに含まれていないため、ジョブやメンテナンス プランのスケジュールを設定する方法を提供しています。したがって、これらのエディションを使用すると、データベースをバックアップするには、別の方法を実行する必要があます  

現在 SQL Server の Express ユーザー、次の方法のいずれかを使用して、データベースをバックアップできます。

SQL Server Management Studio の高速を使用します。これは SQL Server エクスプレス サービス詳細または SQL Server Express Toolkit と共にインストールされます。詳細についてには、次のマイクロソフト開発ネットワーク (MSDN) web サイトを参照してください。

完全なデータベースのバックアップ (SQL Server) を作成します。

  • データベースのバックアップ ファミリのコマンドを使用する Transact SQL スクリプトを使用します。詳細についてには、次の MSDN web サイトを参照してください。

    バックアップ (Transact SQL)

    この資料では Windows タスク スケジューラと共に Transact SQL スクリプトを使用して、SQL Server の高速データベースを定期的にバックアップを自動化する方法について説明します。

  • 詳細

    Windows タスク スケジューラを使用して、SQL Server データベースをバックアップするには次の 3 つの手順を実行するとして必要。

    手順 A: 使用 SQL Server Management Studio Express または Sqlcmd を次のストアド プロシージャは、master データベースに作成します。

    //著作権 © マイクロソフト コーポレーション。無断転載を禁止します。

    //このコードのリリースの契約下で、

    //Microsoft 公開ライセンス (MS の PL、http://opensource.org/licenses/ms-pl.html.)

    [マスター] を使用して
    GO 
    /****** オブジェクト:ストアド プロシージャ [dbo です]。[sp_BackupDatabases] ******/
    SET ANSI_NULLS を
    移動
    SET QUOTED_IDENTIFIER を
    移動
    -=============================================
    : 著者: Microsoft
    : 作成日: 2010年-02-06
    : 説明: は SQLExpress データベースのバックアップ
    : パラメーター 1: databaseName
    : パラメーター 2: backupType F D を完全に、= 差分バックアップ、L = = ログ
    : パラメーター 3: バックアップ ファイルの場所
    : =============================================
    作成」の手順 [dbo]. [[sp_BackupDatabases]
    databaseName sysname @ = null の
    @ backupType CHAR(1)、
    @ backupLocation nvarchar(200)
    AS
    設定の NOCOUNT ON;
               
               DECLARE @DBs TABLE
               (
                      ID int IDENTITY PRIMARY KEY,
                     DBNAME nvarchar(500)
               )
               
                -- Pick out only databases which are online in case ALL databases are chosen to be backed up
                -- If specific database is chosen to be backed up only pick that out from @DBs
               INSERT INTO @DBs (DBNAME)
               SELECT Name FROM master.sys.databases
               where state=0
               AND name=@DatabaseName
               OR @DatabaseName IS NULL
               ORDER BY Name
               
               -- Filter out databases which do not need to backed up
               IF @backupType='F'
                     BEGIN
    削除 Db @ 場所 DBNAME で ('tempdb'、'Northwind'、'pubs'、'AdventureWorks')
    終了
    ELSE IF @ backupType = 必要がある '
    開始
    削除 Db @ 場所 DBNAME で ('tempdb'、'Northwind'、'pubs'、'マスター'、'AdventureWorks')
    終了
    ELSE IF @ backupType"L"=
    開始
    削除 Db @ 場所 DBNAME で ('tempdb'、'Northwind'、'pubs'、'マスター'、'AdventureWorks')
    終了
    ELSE
    開始
    戻る
    終了
    : 変数を宣言する
    宣言 @ BackupName varchar(100)
    宣言 @ バックアップファ varchar(100)
    宣言 @ DBNAME varchar(300)
    DECLARE @ sqlCommand 文字
    DECLARE @ 日時 NVARCHAR(20)
    @ ループが宣言の int
    : データベース全体を 1 つずつループ
    ループの選択 @ min(ID) FROM @ Db =
    WHILE ループ IS NOT NULL の @
    開始
    [dbname] 形式のいくつかを必要とするため、または _ 名にデータベース名をしなければ
    設定 @ DBNAME '['+(SELECT DBNAME FROM @DBs WHERE ID = @Loop) ']' = +
    --現在の日付と時刻の n yyyyhhmmss の形式を設定する
    セット @ dateTime 置換 = (変換 (varchar 型、GETDATE(),101),'/','') + _ +を交換してください (変換 (varchar 型、GETDATE(),108),':','')
    - バックアップ ・ ファイル名を path\filename.extension の形式では、フル、差分、およびログのバックアップを作成
    backupType @ の = 'F' と
    設定 @ バックアップファ = backupLocation + 置換 @ (を交換してください (@ DBNAME は ' ['、」)、']'、') '_FULL_' + @ dateTime +'。BAK'
    ELSE IF @ backupType = が '
    設定 @ バックアップファ = backupLocation + 置換 @ (を交換してください (@ DBNAME は '['、')、']'、') '_DIFF_' + @ dateTime +'。BAK'
    ELSE IF @ backupType"L"=
    設定 @ バックアップファ = backupLocation + 置換 @ (を交換してください (@ DBNAME、'['、')、']'、') '_LOG_' + @ dateTime +'。TRN'
    --バックアップ メディアを格納するための名前を指定
    backupType @ の = 'F' と
    設定 @ BackupName REPLACE(REPLACE(@DBNAME,'[',''),']','') = +' のフル ・ バックアップ ・ '+ @ dateTime
    backupType @ = のかどうかは必要がある '
    設定 @ BackupName REPLACE(REPLACE(@DBNAME,'[',''),']','') = +' の差分バックアップを ' + @ dateTime
    backupType @ が"L"= かどうか
    設定 @ BackupName REPLACE(REPLACE(@DBNAME,'[',''),']','') = +' ログのバックアップを ' + @ dateTime
    --実行する動的 SQL コマンドを生成
    backupType @ の = 'F' と
    開始
    セット @ sqlCommand ' バックアップ データベース ' +@DBNAME+ =' ディスクへの =」' +@BackupFile+ '' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'
                     END
          IF @backupType = 'D'
                     BEGIN
                  SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH DIFFERENTIAL, INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'        
                     END
          IF @backupType = 'L' 
                     BEGIN
                  SET @sqlCommand = 'BACKUP LOG ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'        
                     END
     
    -- Execute the generated SQL command
          EXEC(@sqlCommand)
     
    -- Goto the next database
    SELECT @Loop = min(ID) FROM @DBs whereID > @ ループ
    終了

    手順 B: テキスト エディター、Sqlbackup.bat、という名前でバッチ ファイルを作成し、テキストを次の例のいずれかのシナリオに応じて、そのファイルをコピーします。

    例:Windows 認証を使用して、SQLEXPRESS のローカルの名前付きインスタンスでのすべてのデータベースの完全バックアップ

    //Sqlbackup.bat

    sqlcmd S します \EXPRESS – e ・ Q"EXEC sp_BackupDatabases @ backupLocation = 必要がありました: \SQLBackups\'、backupType @ を 'F' =" 

    Example2:は SQLLogin とそのパスワードを使用して、SQLEXPRESS のローカルの名前付きインスタンス内のすべてのデータベースの差分バックアップ

    //Sqlbackup.bat

    sqlcmd-u SQLLogin-p パスワード -S します \SQLEXPRESS -Q"EXEC sp_BackupDatabases@ backupLocation 'D:\SQLBackups'、BackupType @ = いた '"。

    : パッケージが、SQLLogin/opt に最小限のバックアップ オペレーター ロールを SQL Server。


    例 3:Windows 認証を使用して、SQLEXPRESS のローカルの名前付きインスタンスでのすべてのデータベースのログ バックアップ

    //Sqlbackup.bat

    sqlcmd S します \SQLEXPRESS-e-q"EXEC sp_BackupDatabases @ backupLocation='D:\SQLBackups\',@backupType='L'"。

    例 4:データベースに Windows 認証を使用して、ローカルの名前付きインスタンスの SQLEXPRESS USERDB のフル ・ バックアップ

    //Sqlbackup.bat

    sqlcmd S \SQLEXPRESS-e-q"EXEC sp_BackupDatabases @ backupLocation = 必要がありました: \SQLBackups\'、databaseName @ を 'USERDB' =、backupType @ を 'F' ="。

    同様に、差分の貼り付けで USERDB のバックアップすることができます同じ ' の@ backupTypeパラメーターは、USERDB のログ バックアップが"L" @ backupTypeパラメーターを貼り付ける。

    手順 c:B. の手順で作成したバッチ ファイルを実行する Windows タスク スケジューラを使用してジョブのスケジュールをこれを行うには、次の手順を実行します:

    1. SQL Server を高速に実行しているコンピューターで、[スタート] ボタン、[すべてのプログラム] をポイントアクセサリの順をポイントシステム ツールをポイントし、[ ] をクリックしてタスク 
    2. ダブルクリックして追加予定の作業 
    3. スケジュールされたタスク ウィザードで、次へをクリックします。 
    4. [参照] をクリックして、手順 B で作成したバッチ ファイルをクリックして、[開く] をクリックします。 
    5. SQLBACKUPタスクの名前を入力、毎日、] をクリックし、[次へ] をクリックします。 
    6. については、タスクを実行するスケジュールを指定します。(このタスクは、毎日少なくとも 1 回実行することを推奨します。)その後、次へをクリックします。
    7. [ユーザー名] フィールドで、ユーザー名を入力し、パスワードを入力してください] フィールドにパスワードを入力します。

      1、3、または 4 の例では、複数のファイルのいずれかを使用している場合は、このユーザーには、少なくとも、BackupOperator ロールは SQL Server レベル割り当てる必要があります。
    8. 次へ] をクリックし、[完了] をクリックします。 
    9. タスク、バックアップが正常に作成されているかどうかを確認するには、少なくとも 1 回を実行します。

      SQLCMD の実行可能ファイルのフォルダー通常パス変数、サーバー SQL Server をインストール後にこのフォルダーを Path 変数が表示されていない場合は、[ < インストール場所 > \90\Tools\Binn検索できますです (例: ファイル名指定して SQL Server\90\Tools\Binn).

      、この資料に記載されている手順を使用する場合に、以下の注意:

      • Windows タスク スケジューラ サービスがジョブの実行がスケジュールされているときに実行しなければなりません。このサービスのスタートアップの種類に自動的に設定をお勧めします。これは、再起動時にも、サービスを実行することになります。
      • は、多くの領域で、ドライブのバックアップに書き込まれる必要があります。定期的にディスクの空き領域が不足して実行しないことを確認するのには、バックアップ フォルダー内の古いファイルを削除することをお勧めします。スクリプトが古いファイルを削除するロジックはありません

      その他の参照

    警告: この記事は自動翻訳されています

    プロパティ

    文書番号:2019698 - 最終更新日: 06/28/2012 23:51:00 - リビジョン: 1.0

    • kbmt KB2019698 KbMtja
    フィードバック