URL に対する SQL Server バックアップ (Azure Storage) を確認する

完了

このプロセスでは、まず、Azure サブスクリプション内に Azure ストレージ アカウントを作成します。 SQL Server では、Azure ストレージ アカウントの名前とアクセス キー値を使って認証し、Microsoft Azure BLOB Storage サービスに対して BLOB の書き込みや読み取りを行ったり、個々のコンテナーに対して読み取りと書き込みアクセス許可を付与する Shared Access Signature トークンを使用したりすることができます。 この認証情報は、SQL Server 資格情報に格納され、バックアップまたは復元操作中に使用されます。

URL に対する SQL Server バックアップを実装するには、次の方法を使用できます。

  • SQL Server Management Studio のバックアップ タスク: SQL Server 資格情報を使用して SQL Server Management Studio のバックアップ タスクで URL にデータベースをバックアップできます。
  • メンテナンス プラン ウィザードを使用した SQL Server Backup to URL: SQL Server Management Studio のメンテナンス プラン ウィザードには、バックアップ先の 1 つとして URL が含まれています。また、SQL 資格情報など、Azure Storage へのバックアップに必要な他のサポート オブジェクトも含まれています。
  • Transact-SQL、PowerShell、または C#: 共有アクセス トークンを使用して、ストライプ バックアップ セット、SQL Server ファイル スナップショット バックアップ、または SQL 資格情報を作成するには、これらの方法を使用する必要があります

Azure Virtual Machines 用の SQL Server 自動バックアップ v2

Automated Backup v2 は、SQL Server 2016/2017 Standard、Enterprise、Developer エディションを実行する Azure Virtual Machine 上のすべての既存および新しいデータベースのために、Microsoft Azure に対するマネージド バックアップを自動的に構成します。 これにより、Azure Blob Storage を利用する通常のデータベース バックアップを構成できます。 自動バックアップ v2 は、SQL Server IaaS Agent 拡張機能に依存します。

自動バックアップ v2 は、SQL Server 2016 以降と連携して動作します。 SQL Server 2014 を使用している場合は、データベースのバックアップに自動バックアップ v1 をお使いください。

データベース構成

  • ターゲット データベースでは、完全復旧モデルを使用する必要があります。 バックアップに対する完全復旧モデルの影響の詳細については、「完全復旧モデルでのバックアップ」を参照してください。
  • システム データベースでは、完全復旧モデルを使う必要はありません。 しかし、モデルまたは MSDB のログのバックアップの作成を必要とする場合は、完全復旧モデルを使用する必要があります。
  • ターゲット データベースは、既定の SQL Server インスタンス、または「Azure Virtual Machines における SQL Server についてよく寄せられる質問」で説明されている手順に従ってインストールした名前付きインスタンスのいずれかに存在する必要があります。

Azure portal または Az PowerShell モジュールを使用して、プロビジョニング中または既存の SQL Server 2016 または 2017 仮想マシン用の自動バックアップ v2 を構成することができます。

(Recovery Services コンテナーへの) Azure Virtual Machines の SQL Server バックアップ

Azure Virtual Machines での SQL Server バックアップは、Azure portal または PowerShell で構成することができます (Azure CLI はサポートされていません)。 このプロセスでは、Azure Recovery Services コンテナーからの SQL Server インスタンスとそのデータベースの検出を実行し、検出結果からバックアップするデータベースを選択し、頻度やリテンション期間などのバックアップ設定を決定するバックアップ ポリシーを割り当てます。 また、自動保護を有効にすることもできます。これにより、SQL Server インスタンスまたは Always On 可用性グループ上の既存および将来のデータベースがすべて自動的にバックアップされます。

SQL Server で検出を実行すると、Azure Backup により以下が行われます。

  • AzureBackupWindowsWorkload 拡張機能を追加します。
  • 仮想マシン上のデータベースを検出するために、NT SERVICE\AzureWLBackupPluginSvc アカウントが作成されます。 このアカウントはバックアップと復元に使用され、SQL sysadmin アクセス許可を必要とします。
  • 仮想マシン上で実行されるデータベースを検出し、Azure Backup は、NT AUTHORITY\SYSTEM アカウントを使用します。 このアカウントは SQL でのパブリック サインインである必要があります。

Azure Marketplace イメージを使用して SQL Server 仮想マシンを作成していない場合は、NT SERVICE\AzureWLBackupPluginSvc アカウントに sysadmin ロールを割り当てる必要があります。

Azure Storage に対する SQL Server ファイル スナップショットベースのバックアップ

SQL Server ファイル スナップショット バックアップでは、Azure Blob Storage サービスを使用して格納したデータベース ファイルを、Azure スナップショットを使用してほぼ瞬時にバックアップし、迅速に復元できます。 この機能により、バックアップと復元のポリシーを簡素化することができます。

Azure PowerShell スクリプトと SQL クエリを使用して、SQL Server データ ファイルを Azure BLOB として実装できます。 スクリプトを使うと、オンプレミスで、または Azure 上の仮想マシンで実行されている SQL Server 内にデータベースを簡単に作成し、Azure BLOB ストレージ内にデータの専用の保存場所を設定できます。 PowerShell スクリプトの代わりに Azure portal を使用することもできます。

どの実装方法を選んでも、このプロセスには、ストレージ アカウントの設定、SQL Server 資格情報の作成、ファイルが BLOB に格納されているデータベースの作成が含まれます。 SQL Server には、Azure BLOB コンテナーへの書き込みと読み取りに使用するセキュリティ情報を格納するための資格情報が必要です。

ファイル バックアップ セットのメンテナンス

  • ファイルスナップショット バックアップ セットの削除: FORMAT 引数を使用してファイル スナップショット バックアップ セットを上書きすることはできません。 元のファイル スナップショット バックアップで作成されたファイル スナップショットが孤立したまま残されるのを避けるために、FORMAT 引数は許可されていません。 ファイル スナップショットのバックアップ セットを削除するには、 sys.sp_delete_backup システム ストアド プロシージャを使用します。 このストアド プロシージャは、バックアップ セットを構成するバックアップ ファイルとファイル スナップショットを削除します。 ファイル スナップショット バックアップ セットを削除する別の方法を使用すると、バックアップ セット内のファイル スナップショットを削除することなく、バックアップ ファイルが削除される場合があります。
  • 孤立したバックアップ ファイル スナップショットの削除:バックアップ ファイルが sys.sp_delete_backup システム ストアド プロシージャを使用せずに削除された場合、またはデータベースやデータベース ファイルが含まれる BLOB に関連するバックアップ ファイル スナップショットが存在するときに、そのデータベースやデータベース ファイルが削除された場合は、ファイル スナップショットが孤立している可能性があります。 孤立する可能性のあるファイル スナップショットを識別するために、sys.fn_db_backup_file_snapshots システム関数を使用して、データベース ファイルのすべてのファイル スナップショットを一覧表示します。 ファイル スナップショットが特定のファイル スナップショットのバックアップ セットの一部であることを特定するには、RESTORE FILELISTONLY システム ストアド プロシージャを使用します。 その後、sys.sp_delete_backup_file_snapshot システム ストアド プロシージャを使って、各バックアップ ファイルの孤立したスナップショットを削除できます。 このシステム関数とこれらのシステム ストアド プロシージャを使った例は、このページの下部にあります。

ファイル スナップショット バックアップを使用した復元

各ファイル スナップショット バックアップ セットには各データベース ファイルのファイル スナップショットが含まれているため、復元プロセスには、最大 2 つの隣接するファイル スナップショット バックアップ セットが必要です。 これは、バックアップ セットが完全バックアップまたはログ バックアップからのものであるかに関係なく当てはまります。 これは、従来のストリーミング バックアップ ファイルを使用して復元プロセスを実行する場合とは異なります。 従来のストリーミング バックアップでは、復元プロセスにバックアップ セットのチェーン全体 (完全バックアップ、差分バックアップ、1 つ以上のトランザクション ログのバックアップ) を使用する必要があります。 復元プロセスの復旧の部分は、復元にファイル スナップショット バックアップまたはストリーミング バックアップ セットを使用しているかどうかに関係なく、同じです。

RESTORE DATABASE 操作を実行して特定のファイル スナップショット バックアップ セットの時点までデータベースを復元するには、ベース BLOB 自体と特定のバックアップ セットのみが必要です。 RESTORE DATABASE 操作を実行するにはトランザクション ログのファイル スナップショット バックアップ セットを使用できるため、この種類の RESTORE DATABASE オプションの実行には、通常、トランザクション ログのバックアップ セットを使用します。完全データベース バックアップ セットはほとんど使用されません。

RESTORE DATABASE 操作を実行して、2 つの隣接したトランザクション ログのバックアップ セットの間の特定の時点までデータベースをバックアップするには、2 つのトランザクション ログのバックアップ セット (それぞれデータベースを復元する時点の前後に 1 つ) のみが必要です。 これを実現するには、前の時点のトランザクション ログのファイル スナップショット バックアップ セットを使用して WITH NORECOVERY で RESTORE DATABASE 操作を実行し、後の時点のトランザクション ログのファイル スナップショット バックアップ セットを使用して WITH RECOVERY で RESTORE LOG 操作を実行して、STOPAT 引数を使用してトランザクション ログのバックアップからの復旧を停止する時点を指定します。

ファイル スナップショット バックアップを使ってデータベースとログをバックアップする

次の例では、ファイル スナップショット バックアップを使用して、AdventureWorks2016 のサンプル データベースを URL にバックアップします。

BACKUP DATABASE AdventureWorks2016

TO URL = 'https://[mystorageaccountname].blob.core.windows.net/[mycontainername]/AdventureWorks2016.bak'

WITH FILE_SNAPSHOT ;

SQL Server ファイル スナップショット バックアップから復元する

次の例では、トランザクション ログ ファイル スナップショット バックアップ セットを使って AdventureWorks2016 データベースを復元し、回復操作を示します。 データベースは、単一のトランザクション ログ ファイル スナップショットのバックアップ セットから復元できます。

RESTORE DATABASE AdventureWorks2016 FROM URL = 'https://[mystorageaccountname].blob.core.windows.net/[mycontainername]/AdventureWorks2016_2015_05_18_16_00_00.trn'

WITH RECOVERY, REPLACE ;

SQL Server ファイル スナップショット バックアップから特定の時点に復元する

次の例では、2 つのトランザクション ログ ファイル スナップショット バックアップ セットを使って、AdventureWorks2016 を指定した時点の状態に復元し、回復操作を示します。

RESTORE DATABASE AdventureWorks2016 FROM URL = 'https://[mystorageaccountname].blob.core.windows.net/[mycontainername]/AdventureWorks2016_2015_05_18_16_00_00.trn'

WITH NORECOVERY,REPLACE ;

RESTORE LOG AdventureWorks2016 FROM URL = 'https://[mystorageaccountname].blob.core.windows.net/[mycontainername]/AdventureWorks2016_2015_05_18_18_00_00.trn'

WITH RECOVERY,STOPAT = 'May 18, 2015 5:35 PM' ;

データベース ファイル スナップショット バックアップ セットを削除する

ファイル スナップショットのバックアップ セットを削除するには、sys.sp_delete_backup システム ストアド プロシージャを使います。 データベース名を指定して、指定したファイル スナップショット バックアップ セットが実際に指定したデータベースのバックアップであることをシステムで確認できるようにします。 データベース名を指定しないと、このような検証が行われることなく、指定したバックアップ セットとそのファイル スナップショットが削除されます。

別の方法 (Azure portal や SQL Server Management Studio の Azure Storage ビューアーなど) を使ってファイル スナップショット バックアップ セットを削除しようとすると、バックアップ セット内のファイル スナップショットは削除されません。 これらのツールは、ファイル スナップショット バックアップ セット内のファイル スナップショットへのポインターが含まれる、バックアップ ファイル自体のみを削除します。 sys.fn_db_backup_file_snapshots システム関数を使用して、バックアップ ファイルが不適切に削除された後にバックアップ ファイル スナップショットが残っていないかを確認し、その後 sys.sp_delete_backup_file_snapshot システム ストアド プロシージャを使用して個々のバックアップ ファイル スナップショットを削除します。

次の例では、指定したバックアップ セットを構成するバックアップ ファイルとファイル スナップショットを含む、指定のファイル スナップショット バックアップ セットを削除します。

sys.sp_delete_backup 'https://[mystorageaccountname].blob.core.windows.net/[mycontainername]/AdventureWorks2016.bak', 'adventureworks2016' ;

データベース バックアップ ファイル スナップショットを表示する

各データベース ファイルのベース BLOB のファイル スナップショットを表示するには、sys.fn_db_backup_file_snapshots システム関数を使用します。 このシステム関数を使用すると、Azure Blob ストレージ サービスを使用して格納されたデータベースの、各ベース BLOB のバックアップ ファイル スナップショットをすべて表示できます。 この関数の主な用途は、sys.sp_delete_backup システム ストアド プロシージャ以外のメカニズムを使ってファイル スナップショット バックアップ セットのバックアップ ファイルを削除した際に、削除されずに残ったデータベースのバックアップ ファイル スナップショットを識別することです。 バックアップ ファイル スナップショットが完全な状態のバックアップ セットの一部であるか、完全な状態のバックアップ セットの一部ではないかどうかを判別するには、RESTORE FILELISTONLY システム ストアド プロシージャを使って各バックアップ ファイルに属するファイル スナップショットを一覧表示します。

次の例は、指定したデータベースのすべてのバックアップ ファイル スナップショットの一覧を返します。

USE AdventureWorks2016

select * from sys.fn_db_backup_file_snapshots (null) ;

GO

select * from sys.fn_db_backup_file_snapshots ('AdventureWorks2016') ;

個々のデータベース バックアップ ファイル スナップショットを削除する

データベースのベース BLOB の個々のバックアップ ファイル スナップショットを削除するには、sys.sp_delete_backup_file_snapshot システム ストアド プロシージャを使用します。 このシステム ストアド プロシージャの主な用途は、 sys.sp_delete_backup システム ストアド プロシージャ以外のメソッドを使用してバックアップ ファイルを削除した後に残った、孤立したファイル スナップショット ファイルを削除することです。

警告

ファイル スナップショット バックアップ セットの一部である個別のファイル スナップショットを削除すると、バックアップ セットが無効になります。

次の例では、指定したバックアップ ファイル スナップショットを削除します。 指定したバックアップの URL は、 sys.fn_db_backup_file_snapshots システム関数を使用して取得されました。

sys.sp_delete_backup_file_snapshot N'adventureworks2016', N'https://[mystorageaccountname].blob.core.windows.net/[mycontainername]/AdventureWorks2016Data.mdf?snapshot=2015-05-29T21:31:31.6502195Z' ;