適用対象:SQL Server
Azure SQL Managed Instance
この記事では、Microsoft Azure Blob Storage をバックアップ先として使用するために必要な概念、要件、コンポーネントについて説明します。 バックアップと復元の機能は、ディスクまたはテープを使用する場合とよく似ていますが、いくつか相違点もあります。 この記事では、これらの相違点といくつかのコード例も示します。
ヒント
SQL Server 2025 (17.x) プレビューでは、マネージド ID を使用した URL へのバックアップが導入されています。 Azure Arc で有効になっている SQL Server - マネージド ID を使用した URL へのバックアップ (プレビュー) を確認します。
概要
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 にバックアップして、バックアップと復元のパフォーマンスを向上させ、より大きなデータベース バックアップに対応できます。
- ブロック BLOB はページ BLOB よりも安価です。
- プロキシ サーバー経由でページ BLOB にバックアップする必要があるお客様は、
backuptourl.exe
を使用する必要があります。
Azure Blob Storage に大規模なデータベースをバックアップするとき、Azure SQL Managed Instance の T-SQL の相違点、制限、既知の問題に記載されている制限事項が当てはまります。
データベースが大きすぎる場合、次のいずれかの方法を実行します。
- バックアップの圧縮の使用または
- 複数のブロック BLOB へのバックアップ
Linux、コンテナー、Azure Arc 対応 SQL Managed Instance でのサポート
SQL Server インスタンスが Linux でホストされている場合は、次のものが含まれます。
- スタンドアロンのオペレーティング システム
- コンテナー
- Azure Arc 対応 SQL Managed Instance
- その他の Linux ベースの環境
Azure Blob Storage でサポートされている唯一の URL へのバックアップは、Shared Access Signature を使用して行われる、ブロック BLOB を対象とするものです。
Microsoft Azure Blob Storage
ストレージ アカウント: ストレージ アカウントは、すべてのストレージ サービスの開始点となります。 Microsoft Azure Blob Storage にアクセスするには、まず Azure ストレージ アカウントを作成します。 詳細については、「 ストレージ アカウントの作成」を参照してください。
コンテナー: コンテナーは一連の BLOB をグループ化します。コンテナーには BLOB を無制限に格納できます。 SQL Server のバックアップを Azure Blob Storage に書き込むには、少なくともルート コンテナーが作成されている必要があります。 コンテナーで Shared Access Signature トークンを生成し、特定のコンテナーでのみオブジェクトへのアクセス権を付与できます。
BLOB: 任意の種類とサイズのファイルです。 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 スナップショット: ある時点で取得された Azure BLOB のスナップショットです。 詳細については、「 Creating a Snapshot of a Blob」 (BLOB のスナップショットの作成) を参照してください。 SQL Server バックアップで、Azure Blob Storage に保存されたデータベース ファイルの Azure スナップショット バックアップがサポートされるようになりました。 詳細については、「 Azure でのデータベース ファイルのファイル スナップショット バックアップ」を参照してください。
SQL Server のコンポーネント
URL: 一意なバックアップ ファイルの Uniform Resource Identifier (URI) を示します。 URL を使用して SQL Server バックアップ ファイルの場所と名前を指定します。 URL は、コンテナーだけでなく、実際の BLOB を参照している必要があります。 BLOB が存在しない場合には、新たに作成されます。 既存の BLOB を指定した場合、BLOB 内の既存のバックアップ ファイルを上書きする "WITH FORMAT" オプションを指定しない限り、BACKUP は失敗します。
URL 値の例を次に示します: https://ACCOUNTNAME.blob.core.windows.net/<CONTAINER>/FILENAME.bak
。
注
HTTP を使用した URL へのバックアップはサポートされていません。
資格情報: SQL Server の資格情報は、SQL Server の外部にあるリソースへの接続に必要な認証情報を保存するために使用されるオブジェクトです。 ここで、SQL Server のバックアップおよび復元プロセスによって資格情報が使用され、Azure Blob Storage とそのコンテナー、および BLOB オブジェクトに対する認証が行われます。 資格情報には、ストレージ アカウントの名前と アクセス キー の値またはコンテナーの URL と Shared Access Signature トークンが保存されます。 資格情報が作成されたら、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 で不変ストレージを使用するには、次の手順に従います。
- Azure ストレージ コンテナーの不変性を構成します。
- 次の DBCC コマンドを実行して、SQL Server インスタンスのトレース フラグ 3012 を有効にします。
DBCC TRACEON(3012,-1)
。 -
BACKUP を発行して、データベースを Azure ストレージ コンテナーにバックアップします。
BACKP DATABASE [<Database>] TO URL = ‘<url>’ WITH FORMAT
。
Azure Blob Storage のセキュリティ
Azure Blob Storage へのバックアップやそこからの復元を実行する場合のセキュリティに関する注意点と要件は次のとおりです。
Azure Blob Storage のコンテナーを作成する際は、アクセス権を private に設定することをお勧めします。 アクセス権を private に設定すると、Azure アカウントの認証に必要な情報を指定できるユーザーまたはアカウントだけがアクセスできるようになります。
重要
SQL Server では、Azure のアカウント名とアクセス キーの認証または Shared Access Signature とアクセス トークンを SQL Server 資格情報に保存する必要があります。 この情報は、バックアップ操作または復元操作の実行時に、Azure アカウントに対する認証に使用されます。
警告
Azure Storage では、ストレージ アカウントの共有キー認可を無効にできます。 共有キーの承認が無効になっている場合、SQL Server Backup To URL は機能しません。
BACKUP コマンドまたは RESTORE コマンドの発行に使用するユーザー アカウントは、 資格情報の変更 権限を持つ db_backup operator データベース ロールに属している必要があります。
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
。重要
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 に対してサポートされていません。バックアップセット オプションの指定 -
RETAINDAYS
とEXPIREDATE
はサポートされていません。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 プロキシ構成を設定する必要があります。
- Windows XP または Windows Server 2003 以前の場合は proxycfg.exe ユーティリティ。
- Windows Vista および Windows Server 2008 以降の場合は netsh.exe ユーティリティ。
Azure Blob Storage の不変ストレージ はサポートされていません。 [不変ストレージ] ポリシーを false に設定します。
Azure Blob Storage でサポートされている引数とステートメント
Azure Blob Storage での BACKUP/RESTORE ステートメントのサポート
BACKUP/RESTORE ステートメント | サポートされています | 例外 | コメント |
---|---|---|---|
バックアップ | 年 | BLOCKSIZE および MAXTRANSFERSIZE は、ブロック BLOB ではサポートされています。 ページ BLOB ではサポートされていません。 | ブロック BLOB への BACKUP には、SQL Server 資格情報に保存された Shared Access Signature が必要です。 ページ BLOB への BACKUP には、SQL Server 資格情報に保存されたストレージ アカウント キーが必要であり、WITH CREDENTIAL 引数を指定する必要があります。 |
復元する | 年 | SQL Server 資格情報を定義する必要があります。また、シークレットとしてストレージ アカウント キーを使用して SQL Server 資格情報を定義する場合は、WITH CREDENTIAL 引数を指定する必要があります。 | |
RESTORE FILELISTONLY(ファイルのリストのみを復元) | 年 | SQL Server 資格情報を定義する必要があります。また、シークレットとしてストレージ アカウント キーを使用して SQL Server 資格情報を定義する場合は、WITH CREDENTIAL 引数を指定する必要があります。 | |
HEADERONLY の復元 | 年 | SQL Server 資格情報を定義する必要があります。また、シークレットとしてストレージ アカウント キーを使用して SQL Server 資格情報を定義する場合は、WITH CREDENTIAL 引数を指定する必要があります。 | |
LABELONLY を復元する | 年 | SQL Server 資格情報を定義する必要があります。また、シークレットとしてストレージ アカウント キーを使用して SQL Server 資格情報を定義する場合は、WITH CREDENTIAL 引数を指定する必要があります。 | |
RESTORE VERIFYONLY(データベースの復元確認のみ) | 年 | SQL Server 資格情報を定義する必要があります。また、シークレットとしてストレージ アカウント キーを使用して SQL Server 資格情報を定義する場合は、WITH CREDENTIAL 引数を指定する必要があります。 | |
RESTORE リワインドオンリー | - |
バックアップ ステートメントの構文と一般的な情報については、 BACKUP を参照してください。
restore ステートメントの構文と一般的な情報については、 RESTORE ステートメントを参照してください。
Azure Blob Storage での BACKUP の引数のサポート
引数 | サポートされています | 例外 | コメント |
---|---|---|---|
データベース | 年 | ||
ログ | 年 | ||
(URLへ) | 年 | DISK と TAPE とは異なり、URL は論理名の指定または作成をサポートしていません。 | この引数は、バックアップ ファイルの URL パスの指定に使用されます。 |
ミラー先へ | 年 | ||
WITH オプション: |
|||
資格 情報 | 年 | WITH CREDENTIAL は、BACKUP TO URL オプションを使用して Azure Blob Storage にバックアップするとき、およびシークレットとしてストレージ アカウント キーを使用して SQL Server 資格情報を定義する場合にのみサポートされます | |
ファイルスナップショット | 年 | ||
暗号化 | 年 |
WITH ENCRYPTION 引数を指定すると、SQL Server File-Snapshot Backup は、バックアップを実行する前にデータベース全体が TDE で暗号化されていることを確認し、その場合は、データベースの TDE に指定されたアルゴリズムを使用してファイル スナップショット バックアップ ファイル自体を暗号化します。 データベース全体のデータベース内のすべてのデータが暗号化されていない場合、バックアップは失敗します (たとえば、暗号化プロセスはまだ完了していません)。 |
|
微分 | 年 | ||
コピーのみ | 年 | ||
圧縮|非圧縮 | 年 | ファイル スナップショット バックアップではサポートされていません。 | |
説明 | 年 | ||
名前 | 年 | ||
有効期限 | 保管日数 | - | ||
NOINIT |INIT | - | ブロブに追加することはできません。 バックアップを上書きするには、 WITH FORMAT 引数を使用します。 ただし、( WITH FILE_SNAPSHOT 引数を使用して) ファイル スナップショット バックアップを使用する場合、元のバックアップで作成された孤立したファイル スナップショットが残らないように、 WITH FORMAT 引数は許可されません。 |
|
ノースキップ | スキップ | - | ||
NOFORMAT | フォーマット | 年 |
WITH FORMAT が指定されていない限り、既存の BLOB に対して作成されたバックアップは失敗します。
WITH FORMAT が指定されると、既存の BLOB が上書きされます。 ただし、( WITH FILE_SNAPSHOT 引数を使用して) ファイル スナップショット バックアップを使用する場合、元のファイル スナップショット バックアップで作成された孤立したファイル スナップショットが残らないように FORMAT 引数を使用することはできません。 ただし、( WITH FILE_SNAPSHOT 引数を使用して) ファイル スナップショット バックアップを使用する場合、元のバックアップで作成された孤立したファイル スナップショットが残らないように、 WITH FORMAT 引数は許可されません。 |
|
メディア説明 | 年 | ||
MEDIANAME | 年 | ||
ブロックサイズ | 年 | ページ BLOB ではサポートされていません。 ブロック BLOB ではサポートされています。 | ブロック BLOB で許可される 50,000 ブロックの使用を最適化するため、BLOCKSIZE=65536 にすることをお勧めします。 |
BUFFERCOUNT | 年 | ||
MAXTRANSFERSIZE | 年 | ページ BLOB ではサポートされていません。 ブロック BLOB ではサポートされています。 | 既定値は 1048576 です。 指定できる値は、65536 バイト刻みで最大 4 MB までです。 ブロック BLOB で許可される 50,000 ブロックの使用を最適化するため、MAXTRANSFERSIZE=4194304 にすることをお勧めします。 |
ノーチェックサム | チェックサム | 年 | ||
エラーで停止 | エラー後に続行 | 年 | ||
[統計] | 年 | ||
巻き戻し |NOREWIND | - | ||
アンロード | ノーアンロード | - | ||
NORECOVERY | スタンバイ | 年 | ||
NO_TRUNCATE | 年 |
バックアップ引数の詳細については、 BACKUP を参照してください。
Azure Blob Storage での RESTORE の引数のサポート
引数 | サポートされています | 例外 | コメント |
---|---|---|---|
データベース | 年 | ||
ログ | 年 | ||
から (URL) | 年 | FROM URL 引数は、バックアップ ファイルの URL パスの指定に使用されます。 | |
WITH オプション: | |||
資格 情報 | 年 | WITH CREDENTIAL は、RESTORE FROM URL オプションを使用して Microsoft Azure Blob Storage から復元する場合にのみサポートされます。 | |
パーシャル | 年 | ||
回復 | 回復なし | スタンバイ | 年 | ||
履歴を読み込む | 年 | ||
動く | 年 | ||
取り替える | 年 | ||
再起動 | 年 | ||
限定ユーザー | 年 | ||
ファイル | - | ||
パスワード | 年 | ||
MEDIANAME | 年 | ||
メディアパスワード | 年 | ||
ブロックサイズ | 年 | ||
BUFFERCOUNT | - | ||
MAXTRANSFERSIZE | - | ||
チェックサム|NO_CHECKSUM | 年 | ||
エラーで停止 | エラー後に続行 | 年 | ||
FILESTREAM | 年 | スナップショット バックアップではサポートされていません。 | |
[統計] | 年 | ||
巻き戻し |NOREWIND | - | ||
アンロード | ノーアンロード | - | ||
レプリケーションを維持 | 年 | ||
KEEP_CDC | 年 | ||
ENABLE_BROKER(ブローカーを有効にする) | ERROR_BROKER_CONVERSATIONS(ブローカー会話エラー) | NEW_BROKER(新しいブローカー) | 年 | ||
停止地点 | 停止マーク地点 | マーク前停止 | 年 |
Restore 引数の詳細については、「 RESTORE ステートメント - 引数」を参照してください。
SSMS を使用してバックアップする
SQL Server 資格情報を使用して SQL Server Management Studio のバックアップ タスクで URL にデータベースをバックアップできます。
注
SQL Server ファイル スナップショット バックアップを作成したり、既存のメディア セットを上書きしたりするには、SQL Server Management Studio のバックアップ タスクではなく、Transact-SQL、PowerShell、または C# を使用する必要があります。
次の手順では、Azure Storage へのバックアップを可能にするために SQL Server Management Studio でデータベースのバックアップ タスクに対して行う変更について説明します。
オブジェクト エクスプローラーで、SQL Server データベース エンジンのインスタンスに接続し、そのインスタンスを展開します。
[データベース]を展開して目的のデータベースを右クリックし、[タスク] をポイントして、[バックアップ...] を選択します。
[宛先] セクションの [全般] ページで、[バックアップ先] ドロップダウン リストの [URL] オプションを使用できます。 [URL] オプションを使用して、Windows Azure Storage へのバックアップを作成します。 [ 追加] を選択すると、[ バックアップ先の選択 ] ダイアログ ボックスが開きます。
[Azure ストレージ コンテナー]: バックアップ ファイルを格納する Microsoft Azure ストレージ コンテナーの名前。 ドロップダウン リストから既存のコンテナーを選択するか、コンテナーを手動で入力します。
共有アクセス ポリシー: 手動で入力したコンテナーの Shared Access Signature を入力します。 既存のコンテナーが選択された場合、このフィールドは使用できません。
[バックアップ ファイル]: バックアップ ファイルの名前。
新しいコンテナー: Shared Access Signature がない既存のコンテナーを登録するために使用します。 「 Microsoft Azure サブスクリプションへの接続 (Backup TO URL)」を参照してください。
注
[追加] は、1 つのメディア セットに対して複数のバックアップ ファイルとストレージ コンテナーをサポートします。
バックアップ先として [URL] を選択すると、 [メディア オプション] ページの一部のオプションが無効になります。 [データベースのバックアップ] ダイアログの詳細については、次の記事を参照してください。
- [データベースのバックアップ] ([全般] ページ)
- データベースのバックアップ ([メディア オプション] ページ)
- [データベースのバックアップ] ([バックアップ オプション] ページ)
- 資格情報の作成 - Azure ストレージに対する認証
メンテナンス プランを使用してバックアップする
前述のバックアップ タスクと同様に、SQL Server Management Studio のメンテナンス プラン ウィザードでも、バックアップ先として URL も選択できるようになりました。また、SQL 資格情報など、Azure Storage へのバックアップに必要な他のサポート オブジェクトも追加されました。 詳細については、「 メンテナンス プラン ウィザードの使用 」の「 バックアップ タスクを定義する」を参照してください。
注
共有アクセス トークンを使用してストライプ バックアップ セット、SQL Server ファイル スナップショット バックアップ、または SQL 資格情報を作成するには、メンテナンス プラン ウィザードのバックアップ タスクではなく、Transact-SQL、PowerShell、または C# を使用する必要があります。
SSMS を使用して復元する
データベースの復元タスクには、復元元のデバイスとして [URL] が含まれます。 次の手順は、復元タスクを使用して Azure Blob Storage から復元する方法を示しています。
[データベース] を右クリックして、 [データベースの復元...]を選択します。
[全般] ページで、 [ソース] セクションの [デバイス] を選択します。
参照ボタン ([...]) を選択し、[バックアップ デバイスの選択] ダイアログ ボックスを開きます。
[バックアップ メディアの種類: ] ドロップダウン リストから [URL] を選択します。 [追加] を選択して、[バックアップ ファイルの場所を選択] ダイアログ ボックスを開きます。
[Azure ストレージ コンテナー]: バックアップ ファイルを格納する Microsoft Azure ストレージ コンテナーの完全修飾名。 ドロップダウン リストから既存のコンテナーを選択するか、完全修飾コンテナー名を手動で入力します。
Shared Access Signature: 指定されたコンテナーの Shared Access Signature を入力するために使用されます。
追加:共有アクセス署名がない既存のコンテナーを登録するために使用します。 「 Microsoft Azure サブスクリプションへの接続 (Backup TO URL)」を参照してください。
[OK]: 指定した SQL 資格情報を使用して SQL Server が Microsoft Azure Storage に接続され、[Microsoft Azure でのバックアップ ファイルの位置指定] ダイアログ ボックスが開きます。 このページには、ストレージ コンテナーに存在するバックアップ ファイルが表示されます。 復元に使用するファイルを選んで [OK] を選択します。 これにより、[ バックアップ デバイスの選択 ] ダイアログに戻り、このダイアログで [OK] を 選択すると、メインの 復元 ダイアログに戻り、復元を完了できます。
コード例
ここでは、次の例について説明します。
注
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 コマンドも書き込みます。
注
この例では、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 資格情報を作成します。 次のいずれかの操作を行います。
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>';
ストレージ アカウント ID とアクセス キーを使用
IF NOT EXISTS (SELECT * FROM sys.credentials WHERE name = '<mycredentialname>') CREATE CREDENTIAL [<mycredentialname>] WITH IDENTITY = '<mystorageaccountname>', SECRET = '<mystorageaccountaccesskey>';
データベースの完全バックアップの実行
次の例では、Azure Blob Storage への AdventureWorks2022
データベースの完全バックアップを実行します。 次のいずれかのサンプルを使用します:
Shared Access Signature を使用した TO URL
BACKUP DATABASE AdventureWorks2022 TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak'; GO
ストレージ アカウント 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