次の方法で共有


マネージド ID を使用した URL へのバックアップと復元

適用対象: Azure VM 上の SQL Server(Windows のみ)

この記事では、Microsoft Entra マネージド ID を使用して、AZURE Virtual Machines (VM) データベース SQL Server のバックアップと復元を URL から実行する方法について説明します。

概要

SQL Server 2022 累積的な更新プログラム 17 (CU17) 以降では、SQL Server 資格情報を持つマネージド ID を使用して、Azure BLOB ストレージから Azure VM データベースの SQL Server へのバックアップと復元を行うことができます。 マネージド ID は、Microsoft Entra 認証をサポートするリソースに接続するときにアプリケーションが使用する ID を提供します。

BACKUP TO URL および RESTORE FROM URL T-SQL 操作の資格情報でマネージド ID を使用することは、Azure VM 上の SQL Server でのみサポートされます。 オンプレミスの SQL Server でマネージド ID を使用して BACKUP TO URL および RESTORE FROM URL することはサポートされていません。

前提 条件

  • SQL Server 2022 CU17 以降がインストールされた Azure VM 上の SQL Server は、Microsoft Entra 認証で構成されています。
  • Azure Blob ストレージ アカウント
  • 送信接続と有効なストレージ アカウント サービス エンドポイントを許可するための、ホスト上の Azure Blob Storage と Windows ファイアウォールのアクセス許可への有効なネットワーク アクセス。
  • Azure VM 上の SQL Server のプライマリ マネージド ID には、次のものが必要です。
    • ユーザー割り当てマネージド ID またはシステム割り当てマネージド ID で割り当てられる。 詳細については、「Azure 仮想マシン (VM)でマネージド ID を構成する」を参照してください。
    • ストレージ アカウントに割り当てられているプライマリ マネージド ID の Storage Blob Data Contributor ロールを持つこと。

マネージド ID を使用してサーバー資格情報を作成する

マネージド ID で T-SQL コマンド BACKUP DATABASE <database name> TO URL および RESTORE <database name> FROM URL を使用するには、マネージド ID を使用するサーバー資格情報を作成する必要があります。 資格情報名は、Azure ストレージの URL を表し、データベース バックアップが格納される場所を示します。

次の例は、マネージド ID の資格情報を作成する方法を示しています。

CREATE CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>] 
    WITH IDENTITY = 'Managed Identity'

WITH IDENTITY = 'Managed Identity' 句には、Azure VM 上の SQL Server に割り当てられたプライマリ マネージド ID が必要です。

プライマリ マネージド ID が割り当てられていないか、適切なアクセス許可が付与されていない場合に発生する可能性があるエラー メッセージの詳細については、「エラー メッセージ」セクションを参照してください。

マネージド ID を使って URL に BACKUP を行う

資格情報を作成したら、それを使用してデータベースをバックアップし、Azure Blob Storage に復元できます。 Azure VM 上の SQL Server のプライマリ マネージド ID に、ストレージ アカウントに割り当てられている Storage Blob Data Contributor ロールがあることを確認します。

次の例は、マネージド ID 資格情報を使用してデータベースを Azure Blob Storage にバックアップする方法を示しています。

BACKUP DATABASE [AdventureWorks] 
    TO URL = 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak' 

マネージド ID を使用して URL から RESTORE を取得する

次の例は、マネージド ID 資格情報を使用して Azure Blob Storage からデータベースを復元する方法を示しています。

RESTORE DATABASE [AdventureWorks] 
    FROM URL = 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak' 

エラー メッセージ

トレース フラグ 4675 を使用して、マネージド ID で作成された資格情報を確認できます。 トレース フラグ 4675 が有効になっていない状態で CREATE CREDENTIAL ステートメントが実行された場合、プライマリ マネージド ID がサーバーに設定されていない場合、エラー メッセージは発行されません。 このシナリオをトラブルシューティングするには、トレース フラグが有効になったら、資格情報を削除して再作成する必要があります。

プライマリ マネージド ID が割り当てられていない

プライマリ マネージド ID が Azure VM 上の SQL Server に割り当てられていない場合、バックアップ操作と復元操作は失敗し、マネージド ID が選択されていないことを示すエラー メッセージが表示されます。

Msg 37563, Level 16, State 2, Line 14
The primary managed identity is not selected for this server. Enable the primary managed identity for Microsoft Entra authentication for this server. For more information see (https://aka.ms/sql-server-managed-identity-doc).`

Storage Blob Data Contributor ロールが割り当てられていない

Azure VM 上の SQL Server のプライマリ マネージド ID にストレージ アカウントに対する Storage Blob Data Contributor ロールが付与されていない場合、BACKUP 操作は失敗し、アクセスが拒否されたことを示すエラー メッセージが表示されます。

Msg 3201, Level 16, State 1, Line 31
Cannot open backup device 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak'. Operating system error 5(Access is denied.).
Msg 3013, Level 16, State 1, Line 31
BACKUP DATABASE is terminating abnormally. 

Azure VM 上の SQL Server のマネージド ID にストレージ アカウントに対する Storage Blob Data Contributor ロールが付与されていない場合、RESTORE 操作は失敗し、アクセスが拒否されたことを示すエラー メッセージが表示されます。

Msg 3201, Level 16, State 1, Line 31
Cannot open backup device 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak'. Operating system error 5(Access is denied.).
Msg 3013, Level 16, State 1, Line 31
RESTORE DATABASE is terminating abnormally. 

データベース名の重複

同じ名前の元のデータベースがストレージに存在する場合、同じストレージ パスへの新しいデータベースのバックアップは、次のエラーで失敗します。

Msg 1834, Level 16, State 1, Line 35
RESTORE DATABASE AdventureWorks 
from URL = 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak' 
Msg 1834, Level 16, State 1, Line 35 
The file 'C:\Server\sqlservr\data\AdventureWorks.mdf' cannot be overwritten.  It is being used by the database 'AdventureWorks'. 
Msg 3156, Level 16, State 4, Line 35 
File 'AdventureWorks' cannot be restored to 'C:\Server\sqlservr\data\AdventureWorks.mdf'. Use WITH MOVE to identify a valid location for the file.

この問題を解決するには、データベースを復元する前に、元のデータベースを削除するか、使用されているファイルを別の場所に移動します。 詳細については、「データベースを新しい場所に復元する (SQL Server)」を参照してください。

制限

  • サーバー レベルのマネージド ID は、オンプレミスの SQL Server ではなく、Azure VM 上の SQL Server でのみサポートされます。 Linux では、サーバー レベルのマネージド ID はサポートされていません。

  • マネージド ID を使用した BACKUP TO URL または RESTORE FROM URL は、Azure VM 上の SQL Server でのみサポートされます。 BACKUP TO URL または RESTORE FROM URL は、オンプレミスの SQL Server ではサポートされていません。

  • マネージド ID は、フェールオーバー クラスター インスタンス (FCI) ではサポートされていません。

  • BACKUP TO URL は、Azure VM 上の SQL Server に使用されるのと同じマネージド ID でのみ実行できます。これは、サーバーが VM 上に SQL Server のインスタンスを 1 つまたは複数持っているかどうかです。