次の方法で共有


Microsoft Azure Blob Storage 向けの SQL Server の Backup to URL

Applies to:SQL ServerAzure SQL Managed Instance

この記事では、Microsoft Azure Blob Storage をバックアップ先として使用するために必要な概念、要件、コンポーネントについて説明します。 バックアップと復元の機能は、ディスクまたはテープを使用する場合とよく似ていますが、いくつか相違点もあります。 この記事では、これらの相違点といくつかのコード例も示します。

Tip

SQL Server 2025 (17.x) プレビューでは、マネージド ID を使用した URL へのバックアップが導入されています。 Azure Arc で有効になっている SQL Server - マネージド ID を使用した URL へのバックアップ (プレビュー) を確認します。

Overview

SQL Server 2012 Service Pack 1 CU2 と SQL Server 2014 では、使い慣れた T-SQL 構文を使用して Azure Storage にバックアップを安全に書き込み、Azure Blob Storage を指す URL にバックアップする機能が導入されました。 SQL Server 2016 (13.x) では、 Azure のデータベース ファイルのFile-Snapshot バックアップ と、Shared-Access Signature (SAS) キーを使用したセキュリティが導入されました。これは、Azure Storage セキュリティ ポリシーに対する証明書を認証するためのセキュリティで保護された簡単な方法です。

Microsoft Azure Blob Storage へのバックアップまたは Microsoft Azure Blob Storage からの復元を実行するためのコンポーネントとそれらの間の相互作用を理解することが重要です。

このプロセスでは、まず、Azure サブスクリプション内に Azure ストレージ アカウントを作成します。 このストレージ アカウントは、このストレージ アカウントで作成されたすべてのコンテナーとオブジェクトに対する完全な管理者権限を持つ管理者アカウントです。 SQL Server では、Azure ストレージ アカウントの名前とアクセス キー値を使用して認証し、Microsoft Azure Blob Storage に対して BLOB の書き込みと読み取りを実行するか、特定のコンテナーで生成された Shared Access Signature トークンを使用して読み取り/書き込み権限を付与することができます。 Azure ストレージ アカウントの詳細については、「 Azure ストレージ アカウントについて 」をご覧ください。Shared Access Signature の詳細については、「 Shared Access Signature、第 1 部: SAS モデルについて」をご覧ください。 この認証情報は、SQL Server 資格情報に格納され、バックアップまたは復元操作中に使用されます。

Azure Storage と S3 互換ストレージ

SQL Server 2022 (16.x) では、S3 互換のオブジェクト ストレージにバックアップを書き込む機能が導入されています。バックアップ デバイスの種類として Azure Blob Storage を使用して Backup to URL を行うのと概念的に似た、バックアップと復元の機能があります。 SQL Server 2022 (16.x) では、REST API を使用して新しい S3 コネクタのサポートを追加することで、BACKUP/RESTORE TO/FROM URL 構文が拡張されます。

この記事では、Azure Blob Storage の Backup to URL を使用する方法について説明します。 S3 互換ストレージの URL へのバックアップの使用の詳細については、 S3 互換オブジェクト ストレージの SQL Server の URL へのバックアップに関するページを参照してください。

Azure Storage ブロック BLOB とページ BLOB へのバックアップ

Microsoft Azure Blob Storage に保存できる BLOB には、ブロックとページの 2 種類の BLOB があります。 SQL Server 2016 以降の場合は、ブロック BLOB を使用することをお勧めします。

ストレージ キーが資格情報で使用されている場合は、ページ BLOB が使用されます。Shared Access Signature が使用されている場合は、ブロック BLOB が使用されます。

ブロック BLOB へのバックアップは、SQL Server 2016 またはそれ以降のバージョンでの Azure Blob Storage へのバックアップにのみ使用できます。 SQL Server 2016 以降を実行している場合は、ブロック BLOB にバックアップをするようにして、ページ BLOB は使用しないでください。

主な理由は次のとおりです。

  • BLOB アクセスを承認する方法としては、ストレージ キーよりも Shared Access Signature の方が安全です。
  • 複数のブロック BLOB にバックアップして、バックアップと復元のパフォーマンスを向上させ、より大きなデータベース バックアップに対応できます。
  • Block blob is cheaper than page blob.
  • プロキシ サーバー経由でページ BLOB にバックアップする必要があるお客様は、 backuptourl.exeを使用する必要があります。

Azure Blob Storage に大規模なデータベースをバックアップするとき、Azure SQL Managed Instance の T-SQL の相違点、制限、既知の問題に関する記事に記載されている制限事項が当てはまります。

データベースが大きすぎる場合、次のいずれかの方法を実行します。

  • バックアップの圧縮の使用または
  • 複数のブロック BLOB へのバックアップ

Azure Arc によって有効化される、Linux、コンテナー、および SQL Managed Instance でのサポート

SQL Server インスタンスが Linux でホストされている場合は、次のものが含まれます。

  • スタンドアロンのオペレーティング システム
  • Containers
  • Azure Arc によって有効化される SQL Managed Instance
  • その他の Linux ベースの環境

Azure Blob Storage でサポートされている唯一の URL へのバックアップは、Shared Access Signature を使用して行われる、ブロック BLOB を対象とするものです。

Microsoft Azure Blob Storage

Storage Account: The storage account is the starting point for all storage services. Microsoft Azure Blob Storage にアクセスするには、まず Azure ストレージ アカウントを作成します。 詳細については、「 ストレージ アカウントの作成」を参照してください。

Container: A container provides a grouping of a set of blobs, and can store an unlimited number of blobs. SQL Server のバックアップを Azure Blob Storage に書き込むには、少なくともルート コンテナーが作成されている必要があります。 コンテナーで Shared Access Signature トークンを生成し、特定のコンテナーでのみオブジェクトへのアクセス権を付与できます。

Blob: A file of any type and size. Azure Blob Storage に保存できる BLOB には、ブロックとページという 2 種類の BLOB があります。 SQL Server のバックアップでは、使用されている Transact-SQL 構文に応じていずれかの BLOB タイプを使用できます。 BLOB は、https://<ストレージ アカウント>.blob.core.windows.net/<コンテナー>/<BLOB> という URL 形式を使用してアドレス指定できます。 Azure Blob Storage について詳しくは、「Azure Blob Storage の概要」をご覧ください。 ページ BLOB とブロック BLOB の詳細については、「 Understanding Block and Page Blobs」 (ブロック BLOB とページ BLOB について) をご覧ください。
Azure Blob Storage アカウント、コンテナー、BLOB の図。

Azure Snapshot: A snapshot of an Azure blob taken at a point in time. 詳細については、「 Creating a Snapshot of a Blob」 (BLOB のスナップショットの作成) を参照してください。 SQL Server バックアップで、Azure Blob Storage に保存されたデータベース ファイルの Azure スナップショット バックアップがサポートされるようになりました。 詳細については、「 Azure でのデータベース ファイルのファイル スナップショット バックアップ」を参照してください。

SQL Server のコンポーネント

URL: A URL specifies a Uniform Resource Identifier (URI) to a unique backup file. URL を使用して SQL Server バックアップ ファイルの場所と名前を指定します。 URL は、コンテナーだけでなく、実際の BLOB を参照している必要があります。 BLOB が存在しない場合には、新たに作成されます。 既存の BLOB を指定した場合、BLOB 内の既存のバックアップ ファイルを上書きする "WITH FORMAT" オプションを指定しない限り、BACKUP は失敗します。

URL 値の例を次に示します: https://ACCOUNTNAME.blob.core.windows.net/<CONTAINER>/FILENAME.bak

Note

HTTP を使用した URL へのバックアップはサポートされていません。

Credential: A SQL Server credential is an object that is used to store authentication information required to connect to a resource outside of SQL Server. ここで、SQL Server のバックアップおよび復元プロセスによって資格情報が使用され、Azure Blob Storage とそのコンテナー、および BLOB オブジェクトに対する認証が行われます。 The Credential stores either the name of the storage account and the storage account access key values or container URL and its Shared Access Signature token. 資格情報が作成されたら、BACKUP/RESTORE ステートメントの構文で BLOB の種類と必要な資格情報を指定します。

Shared Access Signature の作成方法の例については、この記事で後述する「Shared Access Signature の作成」の例を参照してください。SQL Server 資格情報の作成については、この記事で後述する「資格情報の作成」の例を参照してください。

資格情報の詳細については、「 資格情報 (データベース エンジン)」を参照してください。

資格情報が使用されるその他の例については、「 SQL Server エージェント プロキシの作成」ご覧ください。

Azure 不変ストレージのサポート

SQL Server 2025 (17.x) プレビューでは、ランサムウェア攻撃から保護する Azure 不変ストレージのサポートが導入されています。 不変ストレージに書き込まれたファイルは、不変性によって定義されているように、変更または削除できません。

通常、SQL Server バックアップは 2 つの手順で作成されます。 最初に、 .bak バックアップ ファイルはゼロで作成され、ファイルはデータで更新されます。 変更できないストレージでのファイルの変更は、ファイルの書き込みとコミット後に許可されないため、バックアップ プロセスでは、ゼロでバックアップ ファイルを作成するための最初の手順がスキップされるようになりました。 代わりに、ブロック BLOB に書き込まれると、バックアップ全体が 1 つの手順で作成されます。

プレビュー期間中、URL へのバックアップに対して不変ストレージのサポートを有効にするには、 トレース フラグ 3012 が必要です。

SQL Server 2025 (17.x) Preview backup to URL で不変ストレージを使用するには、次の手順に従います。

  1. Azure ストレージ コンテナーの不変性を構成します
  2. 次の DBCC コマンドを実行して、SQL Server インスタンスのトレース フラグ 3012 を有効にします。
    DBCC TRACEON(3012,-1).
  3. Issue the BACKUP to back up your database to the Azure storage container:
    BACKP DATABASE [<Database>] TO URL = '<url>' WITH FORMAT.

Azure Blob Storage のセキュリティ

Azure Blob Storage へのバックアップやそこからの復元を実行する場合のセキュリティに関する注意点と要件は次のとおりです。

  • When creating a container for Azure Blob Storage, we recommend that you set the access to private. アクセス権を private に設定すると、Azure アカウントの認証に必要な情報を指定できるユーザーまたはアカウントだけがアクセスできるようになります。

    Important

    SQL Server では、Azure のアカウント名とアクセス キーの認証または Shared Access Signature とアクセス トークンを SQL Server 資格情報に保存する必要があります。 この情報は、バックアップ操作または復元操作の実行時に、Azure アカウントに対する認証に使用されます。

    Warning

    Azure Storage supports disabling Shared Key authorization for a storage account. 共有キーの承認が無効になっている場合、SQL Server Backup To URL は機能しません。

  • The user account that is used to issue BACKUP or RESTORE commands should be in the db_backup operator database role with Alter any credential permissions.

Azure Blob Storage へのバックアップと復元の制限事項

  • SQL Server では、ページ BLOB でサポートされる最大バックアップ サイズが 1 TB に制限されます。 ブロック BLOB を使ってサポートされる最大バックアップ サイズは、約 200 GB (50,000 ブロック * 4 MB MAXTRANSFERSIZE) に制限されます。 ブロック BLOB では、大幅に大きなバックアップ サイズをサポートするストライピングがサポートされています。上限は最大 64 個の URL で、以下の式が適用されます: 64 stripes * 50,000 blocks * 4MB maxtransfersize = 12.8 TB

    Important

    1 つのブロック BLOB でサポートされる最大バックアップ サイズは 200 GB ですが、SQL Server でより小さなブロック サイズで書き込むことにより、バックアップ全体が転送される前に、SQL Server が 5 万ブロックの制限に達してしまう場合があります。 特に、差分または非圧縮バックアップを使用する場合は、(サイズが 200 GB 未満の場合でも) バックアップをストライプしてブロックの制限を回避します。

  • Transact-SQL、SMO、PowerShell コマンドレット、または SQL Server Management Studio のバックアップまたは復元ウィザードを使用して、バックアップまたは復元ステートメントを発行できます。

  • Azure Storage アカウントへのバックアップでは、Shared Access Signature (SAS) トークンまたはストレージ アカウント キーを使用した認証のみがサポートされます。 Microsoft Entra ID (旧称 Azure Active Directory) による認証など、他のすべての認証方法はサポートされていません。

  • 論理デバイス名の作成はサポートされていません。 そのため、 sp_dumpdevice または SQL Server Management Studio を使用したバックアップ デバイスとしての URL の追加はサポートされていません。

  • 既存のバックアップ BLOB への追加はサポートされていません。 既存の BLOB へのバックアップは、 WITH FORMAT オプションを使用してのみ上書きできます。 ただし、( WITH FILE_SNAPSHOT 引数を使用して) ファイル スナップショット バックアップを使用する場合、元のファイル スナップショット バックアップで作成された孤立したファイル スナップショットが残らないように、 WITH FORMAT 引数は許可されません。

  • 1 回のバックアップ操作での複数の BLOB へのバックアップは、ブロック BLOB を使用し、SQL 資格情報のストレージ アカウント キーではなく、Shared Access Signature (SAS) トークンを使用する場合にのみサポートされます。

  • BLOCKSIZEの指定は、ページ BLOB ではサポートされていません。

  • MAXTRANSFERSIZE の指定はページ BLOB に対してサポートされていません。

  • バックアップセット オプションの指定 - RETAINDAYSEXPIREDATE はサポートされていません。

  • SQL Server では、バックアップ デバイス名に最大 259 文字の制限があります。 BACKUP TO URL は、URL https://.blob.core.windows.net//.bakの指定に使用する必要な要素に対して 36 文字を使用し、アカウント、コンテナー、および BLOB 名には 223 文字を残します。

  • SQL Server 2019 (15.x) 以前のバージョンでは、Shared Access Signature (SAS) トークンには 256 文字の制限があり、使用できるトークンの種類が制限されます (たとえば、ユーザー委任キー トークンはサポートされていません)。

  • サーバーからプロキシ サーバー経由で Azure にアクセスする場合は、トレース フラグ 1819 を使用し、次のいずれかの方法で WinHTTP プロキシ構成を設定する必要があります。

    • The proxycfg.exe utility on Windows XP or Windows Server 2003 and earlier.
    • The netsh.exe utility on Windows Vista and Windows Server 2008 or later.
  • Azure Blob Storage の不変ストレージ はサポートされていません。 Set the Immutable Storage policy to false.

  • Backup to URL isn't supported to premium storage.

Azure Blob Storage でサポートされている引数とステートメント

Azure Blob Storage での BACKUP/RESTORE ステートメントのサポート

Backup/Restore Statement Supported Exceptions Comments
BACKUP Yes BLOCKSIZE および MAXTRANSFERSIZE は、ブロック BLOB ではサポートされています。 ページ BLOB ではサポートされていません。 ブロック BLOB への BACKUP には、SQL Server 資格情報に保存された Shared Access Signature が必要です。 ページ BLOB への BACKUP には、SQL Server 資格情報に保存されたストレージ アカウント キーが必要であり、WITH CREDENTIAL 引数を指定する必要があります。
RESTORE Yes SQL Server 資格情報を定義する必要があります。また、シークレットとしてストレージ アカウント キーを使用して SQL Server 資格情報を定義する場合は、WITH CREDENTIAL 引数を指定する必要があります。
RESTORE FILELISTONLY Yes SQL Server 資格情報を定義する必要があります。また、シークレットとしてストレージ アカウント キーを使用して SQL Server 資格情報を定義する場合は、WITH CREDENTIAL 引数を指定する必要があります。
RESTORE HEADERONLY Yes SQL Server 資格情報を定義する必要があります。また、シークレットとしてストレージ アカウント キーを使用して SQL Server 資格情報を定義する場合は、WITH CREDENTIAL 引数を指定する必要があります。
RESTORE LABELONLY Yes SQL Server 資格情報を定義する必要があります。また、シークレットとしてストレージ アカウント キーを使用して SQL Server 資格情報を定義する場合は、WITH CREDENTIAL 引数を指定する必要があります。
RESTORE VERIFYONLY Yes SQL Server 資格情報を定義する必要があります。また、シークレットとしてストレージ アカウント キーを使用して SQL Server 資格情報を定義する場合は、WITH CREDENTIAL 引数を指定する必要があります。
RESTORE REWINDONLY No

For syntax and general information about backup statements, see BACKUP.

For syntax and general information about restore statements, see RESTORE Statements.

Azure Blob Storage での BACKUP の引数のサポート

Argument Supported Exception Comments
DATABASE Yes
LOG Yes
TO (URL) Yes DISK と TAPE とは異なり、URL は論理名の指定または作成をサポートしていません。 この引数は、バックアップ ファイルの URL パスの指定に使用されます。
MIRROR TO Yes
WITH オプション:
CREDENTIAL Yes WITH CREDENTIAL は、BACKUP TO URL オプションを使用して Azure Blob Storage にバックアップするとき、およびシークレットとしてストレージ アカウント キーを使用して SQL Server 資格情報を定義する場合にのみサポートされます
FILE_SNAPSHOT Yes
ENCRYPTION Yes WITH ENCRYPTION引数を指定すると、SQL Server File-Snapshot Backup は、バックアップを実行する前にデータベース全体が TDE で暗号化されていることを確認し、その場合は、データベースの TDE に指定されたアルゴリズムを使用してファイル スナップショット バックアップ ファイル自体を暗号化します。 データベース全体のデータベース内のすべてのデータが暗号化されていない場合、バックアップは失敗します (たとえば、暗号化プロセスはまだ完了していません)。
DIFFERENTIAL Yes
COPY_ONLY Yes
COMPRESSION|NO_COMPRESSION Yes ファイル スナップショット バックアップではサポートされていません。
DESCRIPTION Yes
NAME Yes
有効期限 | 保管日数 No
NOINIT |INIT No BLOB に追加することはできません。 バックアップを上書きするには、 WITH FORMAT 引数を使用します。 ただし、( WITH FILE_SNAPSHOT 引数を使用して) ファイル スナップショット バックアップを使用する場合、元のバックアップで作成された孤立したファイル スナップショットが残らないように、 WITH FORMAT 引数は許可されません。
ノースキップ | スキップ No
NOFORMAT | フォーマット Yes WITH FORMATが指定されていない限り、既存の BLOB に対して作成されたバックアップは失敗します。 WITH FORMATが指定されると、既存の BLOB が上書きされます。 ただし、( WITH FILE_SNAPSHOT 引数を使用して) ファイル スナップショット バックアップを使用する場合、元のファイル スナップショット バックアップで作成された孤立したファイル スナップショットが残らないように FORMAT 引数を使用することはできません。 ただし、( WITH FILE_SNAPSHOT 引数を使用して) ファイル スナップショット バックアップを使用する場合、元のバックアップで作成された孤立したファイル スナップショットが残らないように、 WITH FORMAT 引数は許可されません。
MEDIADESCRIPTION Yes
MEDIANAME Yes
BLOCKSIZE Yes ページ BLOB ではサポートされていません。 ブロック BLOB ではサポートされています。 ブロック BLOB で許可される 50,000 ブロックの使用を最適化するため、BLOCKSIZE=65536 にすることをお勧めします。
BUFFERCOUNT Yes
MAXTRANSFERSIZE Yes ページ BLOB ではサポートされていません。 ブロック BLOB ではサポートされています。 既定値は 1048576 です。 指定できる値は、65536 バイト刻みで最大 4 MB までです。
ブロック BLOB で許可される 50,000 ブロックの使用を最適化するため、MAXTRANSFERSIZE=4194304 にすることをお勧めします。
ノーチェックサム | チェックサム Yes
エラーで停止 | エラー後に続行 Yes
STATS Yes
巻き戻し |NOREWIND No
アンロード | ノーアンロード No
NORECOVERY | スタンバイ Yes
NO_TRUNCATE Yes

For more information about backup arguments, see BACKUP.

Azure Blob Storage での RESTORE の引数のサポート

Argument Supported Exceptions Comments
DATABASE Yes
LOG Yes
FROM (URL) Yes FROM URL 引数は、バックアップ ファイルの URL パスの指定に使用されます。
WITH Options:
CREDENTIAL Yes WITH CREDENTIAL は、RESTORE FROM URL オプションを使用して Microsoft Azure Blob Storage から復元する場合にのみサポートされます。
PARTIAL Yes
回復 | 回復なし | スタンバイ Yes
LOADHISTORY Yes
MOVE Yes
REPLACE Yes
RESTART Yes
RESTRICTED_USER Yes
FILE No
PASSWORD Yes
MEDIANAME Yes
MEDIAPASSWORD Yes
BLOCKSIZE Yes
BUFFERCOUNT No
MAXTRANSFERSIZE No
チェックサム|NO_CHECKSUM Yes
エラーで停止 | エラー後に続行 Yes
FILESTREAM Yes スナップショット バックアップではサポートされていません。
STATS Yes
巻き戻し |NOREWIND No
アンロード | ノーアンロード No
KEEP_REPLICATION Yes
KEEP_CDC Yes
ENABLE_BROKER(ブローカーを有効にする) | ERROR_BROKER_CONVERSATIONS(ブローカー会話エラー) | NEW_BROKER(新しいブローカー) Yes
停止地点 | 停止マーク地点 | マーク前停止 Yes

Restore 引数の詳細については、「 RESTORE ステートメント - 引数」を参照してください。

SSMS を使用してバックアップする

SQL Server 資格情報を使用して SQL Server Management Studio のバックアップ タスクで URL にデータベースをバックアップできます。

Note

SQL Server ファイル スナップショット バックアップを作成したり、既存のメディア セットを上書きしたりするには、SQL Server Management Studio のバックアップ タスクではなく、Transact-SQL、PowerShell、または C# を使用する必要があります。

次の手順では、Azure Storage へのバックアップを可能にするために SQL Server Management Studio でデータベースのバックアップ タスクに対して行う変更について説明します。

  1. In Object Explorer, connect to an instance of the SQL Server Database Engine and then expand that instance.

  2. Expand Databases, right-click the desired database, point to Tasks, and then select Back Up....

  3. On the General page in the Destination section the URL option is available in the Back up to: dropdown list. The URL option is used to create a backup to Microsoft Azure storage. Select Add, and the Select Backup Destination dialog box opens:

    1. [Azure ストレージ コンテナー]: バックアップ ファイルを格納する Microsoft Azure ストレージ コンテナーの名前。 ドロップダウン リストから既存のコンテナーを選択するか、コンテナーを手動で入力します。

    2. 共有アクセス ポリシー: 手動で入力したコンテナーの Shared Access Signature を入力します。 既存のコンテナーが選択された場合、このフィールドは使用できません。

    3. Backup File: Name of the backup file.

    4. New Container: Used to register an existing container that you don't have a Shared Access Signature for. 「 Microsoft Azure サブスクリプションへの接続 (Backup TO URL)」を参照してください。

Note

Add supports multiple backup files and storage containers for a single media set.

When you select URL as the destination, certain options in the Media Options page are disabled. [データベースのバックアップ] ダイアログの詳細については、次の記事を参照してください。

メンテナンス プランを使用してバックアップする

Similar to the backup task described previously, the Maintenance Plan Wizard in SQL Server Management Studio includes URL as one of the destination options, and other supporting objects required to back up to Azure storage like the SQL Credential. 詳細については、「 メンテナンス プラン ウィザードの使用 」の「 バックアップ タスクを定義する」を参照してください。

Note

共有アクセス トークンを使用してストライプ バックアップ セット、SQL Server ファイル スナップショット バックアップ、または SQL 資格情報を作成するには、メンテナンス プラン ウィザードのバックアップ タスクではなく、Transact-SQL、PowerShell、または C# を使用する必要があります。

SSMS を使用して復元する

The Restore Database task includes URL as a device to restore from. 次の手順は、復元タスクを使用して Azure Blob Storage から復元する方法を示しています。

  1. Right-click Databases and select Restore Database....

  2. On the General page, select Device under the Source section.

  3. 参照ボタン ([...]) を選択し、[バックアップ デバイスの選択] ダイアログ ボックスを開きます。

  4. Select URL from the Backup media type: dropdown list. Select Add to open the Select a Backup File Location dialog box.

    1. [Azure ストレージ コンテナー]: バックアップ ファイルを格納する Microsoft Azure ストレージ コンテナーの完全修飾名。 ドロップダウン リストから既存のコンテナーを選択するか、完全修飾コンテナー名を手動で入力します。

    2. Shared Access Signature: 指定されたコンテナーの Shared Access Signature を入力するために使用されます。

    3. Add: Used to register an existing container that you don't have a Shared Access Signature for. 「 Microsoft Azure サブスクリプションへの接続 (Backup TO URL)」を参照してください。

    4. OK: SQL Server connects to Microsoft Azure storage using the SQL Credential information you provided and opens the Locate Backup File in Microsoft Azure dialog. このページには、ストレージ コンテナーに存在するバックアップ ファイルが表示されます。 Select the file you want to use to restore and select OK. これにより、[ バックアップ デバイスの選択 ] ダイアログに戻り、このダイアログで [OK] を 選択すると、メインの 復元 ダイアログに戻り、復元を完了できます。

Code examples

ここでは、次の例について説明します。

Note

Azure Blob Storage での SQL Server 2016 の使用に関するチュートリアルについては、「チュートリアル: SQL Server で Azure Blob Storage を使用する」を参照してください。

Shared Access Signature を作成する

次の例では、新しく作成されたコンテナーで SQL Server 資格情報の作成に使用できる Shared Access Signature を作成します。 このスクリプトでは、保存されているアクセス ポリシーに関連付けられた Shared Access Signature が作成されます。 詳細については、「 Shared Access Signature、第 1 部: SAS モデルについて」を参照してください。 スクリプトはまた、SQL Server に対する資格情報を作成するのに必要な T-SQL コマンドも書き込みます。

Note

この例では、Microsoft Azure PowerShell が必要です。 Azure PowerShell のインストールと使用の詳細については、「Azure PowerShell をインストールして構成する方法」を参照してください。
これらのスクリプトは、Azure PowerShell 5.1.15063 を使用して検証されます。

保存されたアクセス ポリシーに関連付けられた Shared Access Signature

# Define global variables for the script
$prefixName = '<a prefix name>'  # used as the prefix for the name for various objects
$subscriptionName='<your subscription name>'   # the name of subscription name you will use
$locationName = '<a data center location>'  # the data center region you will use
$storageAccountName= $prefixName + 'storage' # the storage account name you will create or use
$containerName= $prefixName + 'container'  # the storage container name to which you will attach the SAS policy with its SAS token
$policyName = $prefixName + 'policy' # the name of the SAS policy

# Set a variable for the name of the resource group you will create or use
$resourceGroupName=$prefixName + 'rg'

# adds an authenticated Azure account for use in the session
Connect-AzAccount

# set the tenant, subscription and environment for use in the rest of
Set-AzContext -SubscriptionName $subscriptionName

# create a new resource group - comment out this line to use an existing resource group
New-AzResourceGroup -Name $resourceGroupName -Location $locationName

# Create a new ARM storage account - comment out this line to use an existing ARM storage account
New-AzStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroupName -Type Standard_RAGRS -Location $locationName

# Get the access keys for the ARM storage account
$accountKeys = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName

# Create a new storage account context using an ARM storage account
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $accountKeys[0].value

# Creates a new container in Azure Blob Storage
$container = New-AzStorageContainer -Context $storageContext -Name $containerName
$cbc = $container.CloudBlobContainer

# Sets up a Stored Access Policy and a Shared Access Signature for the new container
$policy = New-AzStorageContainerStoredAccessPolicy -Container $containerName -Policy $policyName -Context $storageContext -ExpiryTime $(Get-Date).ToUniversalTime().AddYears(10) -Permission "rwld"
$sas = New-AzStorageContainerSASToken -Policy $policyName -Context $storageContext -Container $containerName
Write-Host 'Shared Access Signature= '$($sas.TrimStart('?'))''

# Outputs the Transact SQL to the clipboard and to the screen to create the credential using the Shared Access Signature
Write-Host 'Credential T-SQL'
$tSql = "CREATE CREDENTIAL [{0}] WITH IDENTITY='Shared Access Signature', SECRET='{1}'" -f $cbc.Uri,$sas.TrimStart('?')
$tSql | clip
Write-Host $tSql

スクリプトが正常に実行されたら、CREATE CREDENTIAL コマンドをクエリ ツールにコピーし、SQL Server のインスタンスに接続し、コマンドを実行して Shared Access Signature を持つ資格情報を作成します。

資格情報の作成

次の例では、Azure Blob Storage に対する認証に使用する SQL Server 資格情報を作成します。 次のいずれかの操作を行います。

  1. Shared Access Signature を使用

    スクリプトを実行して前述の Shared Access Signature を作成した場合は、SQL Server のインスタンスに接続されているクエリ エディターに CREATE CREDENTIAL をコピーして、このコマンドを実行します。

    次の T-SQL の例では、Shared Access Signature を使用した資格情報を作成します。

    IF NOT EXISTS (SELECT *
                   FROM sys.credentials
                   WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>')
        CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>]
            WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<SAS_TOKEN>';
    
  2. ストレージ アカウント ID とアクセス キーを使用

    IF NOT EXISTS (SELECT *
                   FROM sys.credentials
                   WHERE name = '<mycredentialname>')
        CREATE CREDENTIAL [<mycredentialname>]
            WITH IDENTITY = '<mystorageaccountname>', SECRET = '<mystorageaccountaccesskey>';
    

データベースの完全バックアップの実行

次の例では、Azure Blob Storage への AdventureWorks2022 データベースの完全バックアップを実行します。 次の例のいずれかを使用します。

  1. Shared Access Signature を使用した TO URL

    BACKUP DATABASE AdventureWorks2022
        TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak';
    GO
    
  2. ストレージ アカウント ID とアクセス キーを使用した TO URL

    BACKUP DATABASE AdventureWorks2022
    TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak'
    WITH CREDENTIAL = '<mycredentialname>',
    COMPRESSION, STATS = 5;
    GO
    

STOPAT を使用して特定の時点に復元する

次の例では、AdventureWorks2022 サンプル データベースを特定の時点の状態に復元し、復元操作を示します。

Shared Access Signature を使用した FROM URL

RESTORE DATABASE AdventureWorks2022 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_16_00_00.bak'
WITH
MOVE 'AdventureWorks2022_data' TO 'C:\Program Files\Microsoft SQL Server\<myinstancename>\MSSQL\DATA\AdventureWorks2022.mdf',
MOVE 'AdventureWorks2022_log' TO 'C:\Program Files\Microsoft SQL Server\<myinstancename>\MSSQL\DATA\AdventureWorks2022.ldf',
NORECOVERY, REPLACE, STATS = 5;
GO

RESTORE LOG AdventureWorks2022 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_18_00_00.trn'
WITH RECOVERY, STOPAT = 'May 18, 2015 5:35 PM';
GO