applies to:SQL Server
Azure SQL Managed Instance
この記事では、バックアップ先としてAzure Blob Storageを使用するために必要な概念、要件、およびコンポーネントについて説明します。 バックアップと復元の機能は、 DISK または TAPEを使用する場合と同じか似ていますが、いくつかの違いがあります。 この記事では、これらの相違点といくつかのコード例も示します。
Tip
SQL Server 2025 (17.x) 以降では、マネージド ID を使用して URL にバックアップできます。 マネージド ID (プレビュー) を使用して URL へバックアップ - Azure Arc によって有効化されている SQL Server をレビューします。
Overview
SQL Server 2012 Service Pack 1 CU2 および SQL Server 2014 では、使い慣れた T-SQL 構文を使用して、Azure ストレージにバックアップを安全に書き込む、Azure Blob Storageで指定された URL にバックアップする機能が導入されました。 SQL Server 2016 (13.x) では、Azure のデータベースファイル向けのファイルスナップショットバックアップと、共有アクセス署名 (SAS) キーによるセキュリティが導入されました。これにより、Azure Storage のセキュリティポリシーに基づき証明書を認証するための安全で簡単な方法が提供されました。
Azure Blob Storageへのバックアップまたは復元を実行するには、コンポーネントとその間の相互作用を理解することが重要です。
Azure サブスクリプション内にAzure Storage アカウントを作成することは、このプロセスの最初の手順です。 このストレージ アカウントは、このストレージ アカウントで作成されたすべてのコンテナーとオブジェクトに対する完全な管理者権限を持つ管理者アカウントです。 SQL Serverは、Azureストレージ アカウント名とそのアクセス キー値を使用して、AZURE BLOB STORAGEに対する BLOB の認証と書き込みと読み取りを行うか、または読み取りおよび書き込み権限を付与する特定のコンテナーで生成された Shared Access Signature トークンを使用できます。 Azure Storage アカウントの詳細については、「About Azure Storage アカウント」を参照してください。Shared Access Signature の詳細については、「Shared Access Signature、パート 1: SAS モデルについてを参照してください。 SQL Server資格情報には、この認証情報が格納され、バックアップ操作または復元操作中に使用されます。
Azure Storageおよび S3 互換ストレージ
SQL Server 2022 (16.x) では、S3 互換オブジェクト ストレージにバックアップを書き込む機能が導入されています。バックアップ機能と復元機能は、概念的には、バックアップ デバイスの種類としてAzure Blob Storageを使用して URL へのバックアップを操作するのと似ています。 SQL Server 2022 (16.x) は、REST API を使用して新しい S3 コネクタのサポートを追加することで、BACKUP/RESTORE TO/FROM URL 構文を拡張します。
この記事には、Azure Blob Storageの Backup to URL の使用に関する情報が含まれています。 S3 互換ストレージの URL へのバックアップの使用の詳細については、「SQL Server S3 互換オブジェクト ストレージの URL へのバックアップを参照してください。
Azure Storage ブロック BLOB とページ BLOB へのバックアップ
Azure Blob Storageに格納できる BLOB には、ブロック BLOB とページ BLOB の 2 種類があります。 SQL Server 2016 以降では、ブロック BLOB が推奨されます。
ストレージ キーが資格情報で使用されている場合は、ページ BLOB が使用されます。Shared Access Signature が使用されている場合は、ブロック BLOB が使用されます。
ブロック BLOB へのバックアップは、Azure Blob Storage へのバックアップで、SQL Server 2016 以降のバージョンでのみ使用できます。 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 へのバックアップ
Azure Arcで有効になっている Linux、コンテナー、およびSQL Managed Instanceでのサポート
SQL Server インスタンスが Linux でホストされている場合は、次のものが含まれます。
- スタンドアロンのオペレーティング システム
- Containers
- Azure Arc により有効化された SQL マネージド インスタンス
- その他の Linux ベースの環境
Azure Blob Storageの URL に対してサポートされている唯一のバックアップは、Shared Access Signature を使用して BLOB をブロックすることです。
Azure Blob Storage
ストレージ アカウント: ストレージ アカウントは、すべてのストレージ サービスの開始点です。 Azure Blob Storageにアクセスするには、最初にAzureストレージ アカウントを作成します。 詳細については、「 ストレージ アカウントの作成」を参照してください。
コンテナ: コンテナーは一連の BLOB のグループ化を提供し、無制限の数の BLOB を格納できます。 SQL ServerバックアップをAzure Blob Storageに書き込むには、少なくともルート コンテナーが作成されている必要があります。 コンテナーで Shared Access Signature トークンを生成し、特定のコンテナーでのみオブジェクトへのアクセス権を付与できます。
ブロッブ: 任意の種類とサイズのファイル。 Azure Blob Storageに格納できる BLOB には、ブロック BLOB とページ BLOB の 2 種類があります。 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 Snapshot: ある時点で取得されたAzure BLOB のスナップショット。 詳細については、「 Creating a Snapshot of a Blob」 (BLOB のスナップショットの作成) を参照してください。 SQL Serverバックアップでは、Azure Blob Storageに格納されているデータベース ファイルのAzureスナップショット バックアップがサポートされるようになりました。 詳細については、「Azure におけるデータベースファイルのファイルスナップショットバックアップ」を参照してください。
SQL Server コンポーネント
URL: URL は、一意のバックアップ ファイルへの URI (Uniform Resource Identifier) を指定します。 URL は、SQL Server バックアップ ファイルの場所と名前を指定するために使用されます。 URL は、コンテナーだけでなく、実際の BLOB を参照している必要があります。 BLOB が存在しない場合は、新たに作成されます。 既存の BLOB が指定されている場合、 BACKUP 失敗します。ただし、blob 内の既存のバックアップ ファイルを上書きする WITH FORMAT オプションが指定されていない限り、失敗します。
URL 値の例を次に示します: https://ACCOUNTNAME.blob.core.windows.net/<CONTAINER>/FILENAME.bak。
Note
HTTP を使用した URL へのバックアップ はサポートされていません 。
Credential: 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資格情報を作成する方法については、この記事で後述する資格情報の作成の例を参照してください。
資格情報の詳細については、「Credentials (データベース エンジン)」を参照してください。
資格情報が使用されるその他の例については、「SQL Server エージェント プロキシの作成を参照してください。
Azureの不変ストレージサポート
SQL Server 2025 (17.x) では、ランサムウェア攻撃から保護する Azure 不変ストレージ のサポートが導入されています。 不変ストレージに書き込まれたファイルは、不変性によって定義されているように、変更または削除できません。
通常、SQL Server バックアップは 2 つの手順で作成されます。 最初に、 .bak バックアップ ファイルはゼロで作成され、ファイルはデータで更新されます。 変更できないストレージでのファイルの変更は、ファイルの書き込みとコミット後に許可されないため、バックアップ プロセスでは、ゼロでバックアップ ファイルを作成するための最初の手順がスキップされるようになりました。 代わりに、ブロック BLOB に書き込まれると、バックアップ全体が 1 つの手順で作成されます。
Azure ストレージには、コンテナー レベルとバージョン レベルの 2 種類の不変性が用意されています。 現時点では、コンテナー レベルの不変ストレージのみがサポートされています。
SQL Server 2025 (17.x) の URL へのバックアップで不変ストレージを使用するには、次の手順に従います。
Azure ストレージ コンテナーの不変性を構成します。
BACKUP を発行して、データベースを Azure ストレージ コンテナーにバックアップします。 不変ストレージで
WITH FORMATオプションを使用していて、同じ名前のバックアップが既に存在する場合は、エラーが発生し、バックアップは失敗します。BACKUP DATABASE [<Database>] TO URL = '<url>';
Azure Blob Storageのセキュリティ
Azure Blob Storageへのバックアップまたは復元の際のセキュリティに関する考慮事項と要件を次に示します。
Azure Blob Storage用のコンテナーを作成するときは、アクセスを private に設定することをお勧めします。 アクセスをプライベートに設定すると、Azure アカウントに対する認証に必要な情報を提供できるユーザーまたはアカウントへのアクセスが制限されます。
Important
SQL Serverでは、Azureアカウント名とアクセス キー認証、または Shared Access Signature とアクセス トークンのいずれかがSQL Server資格情報に格納されている必要があります。 この情報は、バックアップ操作または復元操作を実行するときに、Azure アカウントに対する認証に使用されます。
Warning
Azure Storageでは、ストレージ アカウントに対する disabling 共有キーの承認がサポートされます。 共有キーの承認が無効になっている場合、SQL Serverバックアップ URL は機能しません。
BACKUPコマンドまたはRESTOREコマンドの発行に使用するユーザー アカウントは、資格情報のアクセス許可を変更するdb_backupオペレーター データベース ロールに含まれている必要があります。
Azure Blob Storageへのバックアップ/復元の制限事項
SQL Serverでは、ページ BLOB を使用してサポートされる最大バックアップ サイズが 1 TB に制限されます。 ブロック BLOB を使用してサポートされる最大バックアップ サイズは、約 195.3 GB (50,000 ブロック * 4 MB
MAXTRANSFERSIZE) に制限されています。 ブロック BLOB では、大幅に大きなバックアップ サイズをサポートするストライピングがサポートされています。上限は最大 64 個の URL で、以下の式が適用されます:64 stripes * 50,000 blocks * 4MB maxtransfersize = 12.8 TB。Important
1 つのブロック BLOB でサポートされる最大バックアップ サイズは約 195.3 GB ですが、SQL Serverが小さいブロック サイズで書き込むことができるため、バックアップ全体が転送される前にSQL Serverが 50,000 ブロック制限に達する可能性があります。 特に、差分または非圧縮バックアップを使用する場合は、(サイズが 200 GB 未満の場合でも) バックアップをストライプしてブロックの制限を回避します。
トランザクション ログ バックアップは、複数のバックアップ ファイルにバックアップするときに、ユーザー指定の
MAXTRANSFERSIZEを無視します。 代わりに、バックアップ コマンドのMAXTRANSFERSIZE値に関係なく、複数のファイルが指定されている場合は 64 KB が使用されます。 そのため、URL へのトランザクション ログ バックアップの最大サイズは約 195.3 GB (50,000 ブロック * 4 MBMAXTRANSFERSIZE* 1 ファイルまたは 50,000 ブロック * 64 KB * 64 ファイル) です。 圧縮を使用すると、より大きなトランザクション ログをバックアップできますが、圧縮率は異なります。Transact-SQL、SMO、PowerShell コマンドレット、または SQL Server Management Studio バックアップまたは復元ウィザードを使用して、バックアップまたは復元ステートメントを発行できます。
Azure Storage アカウントにバックアップする場合、SQL Serverは Shared Access Signature (SAS) トークンまたはストレージ アカウント キーを使用した認証のみをサポートします。 Microsoft Entra ID (formerly 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は、URLhttps://.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 の不変ストレージは、2025 年SQL Serverより前はサポートされていません。 不変ストレージ ポリシーを false に設定します。
SQL Server 2025 以降のバージョンでのサポートについては、Azure不変ストレージのサポートを参照してください。
- Azure ストレージには、コンテナー レベルとバージョン レベルの 2 種類の不変性が用意されています。 現時点では、コンテナー レベルの不変ストレージのみがサポートされています。
URL へのバックアップは、 Premium Storage ではサポートされていません。
Azure Blob Storageでサポートされている引数とステートメント
Azure Blob Storageでのバックアップ/復元ステートメントのサポート
| Backup/Restore ステートメント | Supported | Exceptions | Comments |
|---|---|---|---|
BACKUP |
Yes |
BLOCKSIZE および MAXTRANSFERSIZE はブロック BLOBs をサポートしています。 ページ BLOB ではサポートされていません。 |
BACKUPをブロックBLOBにするには、SQL Serverの資格情報に保存された共有アクセス署名が必要です。 ページ 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 |
バックアップ ステートメントの構文と一般的な情報については、 BACKUP を参照してください。
restore ステートメントの構文と一般的な情報については、 RESTORE ステートメントを参照してください。
Azure Blob Storageでのバックアップ引数のサポート
| 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 | ||
EXPIREDATE | RETAINDAYS |
No | ||
NOINIT | INIT |
No | BLOB に追加することはできません。 バックアップを上書きするには、 WITH FORMAT 引数を使用します。 ただし、( WITH FILE_SNAPSHOT 引数を使用して) ファイル スナップショット バックアップを使用する場合、元のバックアップで作成された孤立したファイル スナップショットが残らないように、 WITH FORMAT 引数は許可されません。 |
|
NOSKIP | SKIP |
No | ||
NOFORMAT | FORMAT |
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 です。 この値の範囲は、65,536 バイト単位で最大 4 MB です。 ブロック BLOB で許可されている 50,000 ブロックの使用を最適化するために、 MAXTRANSFERSIZE=4194304 をお勧めします。 |
NO_CHECKSUM | CHECKSUM |
Yes | ||
STOP_ON_ERROR | CONTINUE_AFTER_ERROR |
Yes | ||
STATS |
Yes | ||
REWIND | NOREWIND |
No | ||
UNLOAD | NOUNLOAD |
No | ||
NORECOVERY | STANDBY |
Yes | ||
NO_TRUNCATE |
Yes |
バックアップ引数の詳細については、 BACKUP を参照してください。
Azure Blob Storageでの復元引数のサポート
| Argument | Supported | Exceptions | Comments |
|---|---|---|---|
DATABASE |
Yes | ||
LOG |
Yes | ||
FROM (URL) |
Yes |
FROM URL引数は、バックアップ ファイルの URL パスを指定するために使用されます。 |
|
WITH オプション: |
|||
CREDENTIAL |
Yes |
WITH CREDENTIAL は、RESTORE FROM URL オプションを使用してAzure Blob Storageから復元する場合にのみサポートされます。 |
|
PARTIAL |
Yes | ||
RECOVERY | NORECOVERY | STANDBY |
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 | ||
CHECKSUM | NO_CHECKSUM |
Yes | ||
STOP_ON_ERROR | CONTINUE_AFTER_ERROR |
Yes | ||
FILESTREAM |
Yes | スナップショット バックアップではサポートされていません。 | |
STATS |
Yes | ||
REWIND | NOREWIND |
No | ||
UNLOAD | NOUNLOAD |
No | ||
KEEP_REPLICATION |
Yes | ||
KEEP_CDC |
Yes | ||
ENABLE_BROKER | ERROR_BROKER_CONVERSATIONS | NEW_BROKER |
Yes | ||
STOPAT | STOPATMARK | STOPBEFOREMARK |
Yes |
Restore 引数の詳細については、「 RESTORE ステートメント - 引数」を参照してください。
SSMS を使用してバックアップする
SQL Server資格情報を使用して、SQL Server Management Studioのバックアップ タスクを使用してデータベースを URL にバックアップできます。
Note
SQL Serverファイル スナップショット バックアップを作成したり、既存のメディア セットを上書きしたりするには、SQL Server Management Studioのバックアップ タスクではなく、Transact-SQL、PowerShell、または C# を使用する必要があります。
次の手順では、Azure ストレージへのバックアップを可能にするために、SQL Server Management Studioのデータベースのバックアップ タスクに加えられた変更について説明します。
オブジェクト エクスプローラー で、SQL Server データベース エンジンのインスタンスに接続し、そのインスタンスを展開します。
[ データベース] を展開し、目的のデータベースを右クリックし、[ タスク] をポイントして、[ バックアップ...] を選択します。
[宛先] セクションの [全般] ページで、[バックアップ先] ドロップダウン リストの [URL] オプションを使用できます。 URL オプションを使用して、ストレージAzureバックアップを作成します。 [ 追加] を選択すると、[ バックアップ先の選択 ] ダイアログ ボックスが開きます。
Azure ストレージ コンテナー: バックアップ ファイルを格納するAzureストレージ コンテナーの名前。 ドロップダウン リストから既存のコンテナーを選択するか、コンテナーを手動で入力します。
共有アクセス ポリシー: 手動で入力したコンテナーの Shared Access Signature を入力します。 既存のコンテナーが選択された場合、このフィールドは使用できません。
バックアップ ファイル: バックアップ ファイルの名前。
新しいコンテナー: Shared Access Signature がない既存のコンテナーを登録するために使用します。 「 Microsoft Azure サブスクリプションへの接続 (Backup TO URL)を参照してください。
Note
Add では、1 つのメディア セットに対して複数のバックアップ ファイルとストレージ コンテナーがサポートされます。
宛先として URL を 選択すると、[ メディア オプション] ページの特定のオプションが無効になります。 [データベースのバックアップ] ダイアログの詳細については、次の記事を参照してください。
- [データベースのバックアップ] ([全般] ページ)
- データベースのバックアップ ([メディア オプション] ページ)
- [データベースのバックアップ] ([バックアップ オプション] ページ)
- 資格情報の作成 - Azure Storage に対する認証
メンテナンス プランを使用してバックアップする
前に説明したバックアップ タスクと同様に、SQL Server Management Studioのメンテナンス プラン ウィザードには、宛先オプションの 1 つとして URL が含まれており、SQL 資格情報などのAzure ストレージにバックアップするために必要なその他のサポート オブジェクトが含まれています。 詳細については、「 メンテナンス プラン ウィザードの使用 」の「 バックアップ タスクを定義する」を参照してください。
Note
ストライプ バックアップ セット、SQL Server ファイル スナップショット バックアップ、または共有アクセス トークンを使用する SQL 資格情報を作成するには、メンテナンス プラン ウィザードのバックアップ タスクではなく、Transact-SQL、PowerShell、または C# を使用する必要があります。
SSMS を使用して復元する
データベースの復元タスクには、復元元のデバイスとしての URL が含まれています。 次の手順では、復元タスクを使用してAzure Blob Storageから復元する方法について説明します。
[ データベース ] を右クリックし、[ データベースの復元...] を選択します。
[全般] ページで、[ソース] セクションで [デバイス] を選択します。
参照ボタン ([...]) を選択し、[バックアップ デバイスの選択] ダイアログ ボックスを開きます。
[バックアップ メディアの種類: ] ドロップダウン リストから [URL] を選択します。 [ 追加] を選択して、[ バックアップ ファイルの場所の選択 ] ダイアログ ボックスを開きます。
Azure ストレージ コンテナー: バックアップ ファイルを含むAzure ストレージ コンテナーの完全修飾名。 ドロップダウン リストから既存のコンテナーを選択するか、完全修飾コンテナー名を手動で入力します。
Shared Access Signature: 指定されたコンテナーの Shared Access Signature を入力するために使用されます。
追加:共有アクセス署名がない既存のコンテナーを登録するために使用します。 「 Microsoft Azure サブスクリプションへの接続 (Backup TO URL)を参照してください。
OK: SQL Serverは、指定した SQL 資格情報を使用してAzure ストレージに接続し、Microsoft Azure ダイアログでバックアップ ファイルの割り当てを開きます。 このページには、ストレージ コンテナーに存在するバックアップ ファイルが表示されます。 復元に使用するファイルを選択し、[ OK] を選択します。 これにより、[ バックアップ デバイスの選択 ] ダイアログに戻り、このダイアログで [OK] を 選択すると、メインの 復元 ダイアログに戻り、復元を完了できます。
コード例
ここでは、次の例について説明します。
Note
Azure Blob Storageでの SQL Server 2016 の使用に関するチュートリアルについては、「
Shared Access Signature を作成する
次の例では、新しく作成されたコンテナーにSQL Server資格情報を作成するために使用できる Shared Access Signature を作成します。 このスクリプトでは、保存されているアクセス ポリシーに関連付けられた Shared Access Signature が作成されます。 詳細については、「 Shared Access Signature、第 1 部: SAS モデルについて」を参照してください。 このスクリプトでは、SQL Serverで資格情報を作成するために必要な T-SQL コマンドも書き込まれます。
Note
この例では、Azure PowerShellが必要です。 Azure PowerShellのインストールと使用の詳細については、「
保存されたアクセス ポリシーに関連付けられた 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する AdventureWorks2025 データベースの完全なデータベース バックアップを実行します。 次の例のいずれかを使用します。
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 を使用して特定の時点に復元する
次の例では、AdventureWorks2025 サンプル データベースを特定の時点の状態に復元し、復元操作を示します。
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