SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server の汎用バックアップのテンプレートスクリプトを作ってみる

leave a comment

PowerShell ベースですが、SQL Server の汎用バックアップのテンプレートにできそうなスクリプトを作ってみました。

スクリプトは SQL Server BackupSample.ps1 に置いてあります。

基本動作としては以下のようになっています。

  • 完全バックアップ / 差分バックアップ / トランザクションログバックアップを実行
  • バックアップの取得先は既定のバックアップディレクトリ
  • バックアップ取得時に圧縮とチェックサムの確認を実施

完全バックアップの実装の特徴としては、以下となります。

  • tempdb のバックアップは取得しない

tempdb は SQL Server のサービス起動時に初期化されるため、バックアップを取得することができません。
そのため、完全バックアップでは取得の除外とするようにしています。

 

差分バックアップの実装の特徴としては、以下となります。

  • tempdb のバックアップは取得しない
  • 完全バックアップが取得されていない場合は、完全バックアップを取得する

tempdb の扱いについては完全バックアップと同じですね。
差分バックアップは前回完全バックアップからの差分となりますので、一度でも完全バックアップを取得していないデータベースでは取得することができません。

そのため、msdb の backupset からバックアップ情報を取得し、完全バックアップが取得されているかを確認しています。
# これは、データベースのプロパティを開いたときの最終のバックアップ日時の確認と同じ方法です。

 

トランザクションログバックアップの実装の特徴としては、以下となります。

  • 単純復旧モデルのデータベースは取得しない
  • 完全バックアップが取得されていないデータベースについてはログバックアップの取得をスキップする

トランザクションログのバックアップは単純復旧モデルでは取得できませんので、単純の場合はスキップしています。
また、差分バックアップ同様、完全バックアップが取得されていないデータベースについてはログバックアップは取得できませんのでこちらも同様にスキップしています。

基本的な動作確認のみ実施したものではありますが、サンプルとして利用可能なようでしたらご利用いただければと思います。

Share

Written by Masayuki.Ozawa

1月 18th, 2016 at 7:41 pm

Posted in SQL Server

Tagged with

Leave a Reply