次の方法で共有


SQL Server Backup to URL に関するベスト プラクティスとトラブルシューティング

このトピックでは、Azure Blob service との間の SQL Server のバックアップと復元に関するベスト プラクティスとトラブルシューティングのヒントを示します。

SQL Server のバックアップ操作または復元操作に Azure Blob Storage サービスを使用する方法の詳細については、次のトピックを参照してください。

バックアップの管理

バックアップを管理するための一般的な推奨事項を次に示します。

  • BLOB を誤って上書きしないように、各バックアップに一意なファイル名を付けることをお勧めします。

  • コンテナーを作成する際は、アクセス レベルを privateに設定し、必要な認証情報を指定できるユーザーまたはアカウントだけがコンテナー内の BLOB の読み取りや書き込みを実行できるようにすることをお勧めします。

  • Azure Virtual Machine で実行している SQL Server インスタンス上の SQL Server データベースでは、バーチャル マシンと同じ地域のストレージ アカウントを使用して、地域間のデータ転送コストを回避してください。 また、同じ地域を使用すると、バックアップ操作と復元操作で最適なパフォーマンスを得ることができます。

  • バックアップ処理に失敗すると、無効なバックアップ ファイルが生成されます。 失敗したバックアップを定期的に確認し、BLOB ファイルを削除することをお勧めします。 詳細については、「 Deleting Backup Blob Files with Active Leases」をご覧ください。

  • バックアップ中に WITH COMPRESSION オプションを使用すると、ストレージ コストとストレージのトランザクション コストを最小限に抑えることができます。 また、バックアップ プロセスが完了するまでにかかる時間を短縮することもできます。

大きなファイルの処理

  • SQL Server のバックアップ操作では、複数のスレッドを使用して、Azure Blob Storage サービスへのデータ転送を最適化します。 ただし、パフォーマンスは ISV の帯域幅やデータベースのサイズなどのさまざまな要因によって異なります。 内部設置型の SQL Server データベースから大きなデータベースまたはファイル グループをバックアップする場合は、最初にスループットのテストを行うことをお勧めします。 Azure Storage SLA の には、考慮できる BLOB の最大処理時間があります。

  • バックアップの管理」セクションで推奨されているように WITH COMPRESSION オプションを使用することは、大きなファイルをバックアップするときに非常に重要です。

BACKUP TO URL または RESTORE FROM URL のトラブルシューティング

ここでは、Azure Blob Storage サービスへのバックアップまたは Azure Blob Storage サービスからの復元を実行するときに発生するエラーを簡単にトラブルシューティングする方法をいくつか示します。

サポートされていないオプションまたは制限事項によるエラーを回避するには、azure Blob Storage Service を使用した SQL サーバーのバックアップと復元に関する記事で、制限事項の一覧と BACKUP コマンドと RESTORE コマンドのサポート を確認してください。

認証エラー:

  • WITH CREDENTIAL は新しいオプションであり、Azure Blob Storage サービスへのバックアップまたは Azure Blob Storage サービスからの復元に必要です。 資格情報に関連するエラーには、次のようなものがあります。

    BACKUP コマンドまたは RESTORE コマンドで指定された資格情報が存在しません。 この問題を回避するには、資格情報が BACKUP ステートメントに存在しない場合に資格情報を作成する T-SQL ステートメントを含めることができます。 使用可能な例を次に示します。

    IF NOT EXISTS  
    (SELECT * FROM sys.credentials   
    WHERE credential_identity = 'mycredential')  
    CREATE CREDENTIAL <credential name> WITH IDENTITY = 'mystorageaccount'  
    ,SECRET = '<storage access key> ;  
    
    
  • 資格情報は存在しますが、BACKUP コマンドの実行に使用されるログイン アカウントに資格情報へのアクセス権限がありません。 Alter any credential 権限がある db_backupoperator ロールのログイン アカウントを使用してください。

  • ストレージ アカウントの名前とキーの値を確認してください。 資格情報に格納されている情報は、バックアップ操作と復元操作で使用する Azure ストレージ アカウントのプロパティの値と一致する必要があります。

バックアップ エラー/障害:

  • 同じ BLOB への並列バックアップを実行すると、バックアップの 1 つが " 初期化に失敗しました " エラーで失敗します。

  • 次のエラー ログを使用して、バックアップ エラーのトラブルシューティングに役立ててください。

    • トレース フラグ 3051 を設定して、次の形式の特定のエラー ログへの記録を有効にします。

      BackupToUrl-<instname>-<dbname>-action-<PID>.log <action> は次のいずれかです。

      • DB

      • FILELISTONLY

      • LABELONLY

      • HEADERONLY

      • VERIFYONLY

    • また、Windows イベント ログの下のアプリケーション ログに "SQLBackupToUrl" という名前を付けた情報を確認することもできます。

  • 圧縮されたバックアップから復元するときに、次のエラーが表示される場合があります。

    • SqlException 3284 が発生しました。 重大度: 16、状態: 5
      デバイス 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak' のメッセージ ファイルマークが揃っていません。 バックアップセットの作成に使用したのと同じブロック サイズを指定して RESTORE ステートメントを再実行してください。使用した可能性のある値は '65536' です。

      このエラーを解決するには、BACKUP を指定した BLOCKSIZE = 65536 ステートメントを再実行してください。

  • アクティブなリースを保持している BLOB が原因でバックアップ中に発生するエラー: バックアップ処理に失敗すると、アクティブなリースを保持する BLOB が生成されます。

    BACKUP ステートメントが再実行されると、バックアップ操作が次のようなエラーで失敗することがあります。

    Backup to URL がリモート エンドポイントから例外を受け取りました。 例外メッセージ: リモート サーバーがエラーを返しました: (412) 現在、BLOB にリースがあり、要求でリース ID が指定されていません.

    アクティブなリースを保持しているバックアップ BLOB ファイルに対して RESTORE ステートメントが実行されると、復元操作は次のようなエラーで失敗します。

    例外メッセージ: リモート サーバーからエラーが返されました: (409) 競合。

    このようなエラーが発生した場合は、BLOB ファイルを削除する必要があります。 このシナリオの詳細とこの問題の解決方法については、「 Deleting Backup Blob Files with Active Leases」を参照してください。

プロキシ エラー

インターネットへのアクセスにプロキシ サーバーを使用している場合、以下の問題が発生することがあります。

プロキシ サーバーによる接続数の設定:

プロキシ サーバーで、1 分あたりの接続数を制限する設定が使用されている場合があります。 Backup to URL プロセスはマルチスレッド プロセスであるため、この制限を超える可能性があります。 制限を超えた場合、プロキシ サーバーは接続を切断します。 この問題を解決するには、プロキシ設定を変更し、SQL Server がプロキシを使用しないようにします。 エラー ログに表示される可能性のある種類またはエラー メッセージの例を次に示します。

  • "http://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak" に書き込みます。失敗: URL へのバックアップでリモート エンドポイントから例外を受信しました。 例外メッセージ: 転送接続からデータを読み取ることができません: 接続は閉じられました。

  • ファイル "http://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak:" で回復不可能な I/O エラーが発生しました。リモート エンドポイントからエラーを収集できませんでした。

    メッセージ 3013、レベル 16、状態 1、行 2

    バックアップ データベースが異常終了しています。

  • BackupIoRequest::ReportIoError: バックアップ デバイス 'http://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak' での書き込みエラー。 Backup to URL がリモート エンドポイントから例外を受け取ったオペレーティング システム エラーです。 例外メッセージ: 転送接続からデータを読み取ることができません: 接続は閉じられました。

トレース フラグ 3051 を使用して詳細ログを有効にすると、ログに次のメッセージが表示される場合もあります。

HTTP 状態コード 502、HTTP ステータス メッセージ プロキシ エラー (1 分あたりの HTTP 要求の数が、構成された制限を超えました。ISA サーバー管理者に問い合わせてください。)

選択されていない既定のプロキシ設定:

既定の設定が選択されず、プロキシ認証エラーが発生する場合があります。次に示すようなエラー:ファイル "http://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak:" で回復不可能な I/O エラーが発生しました。URL へのバックアップでリモート エンドポイントから例外が受信されました。例外メッセージ: リモート サーバーから次のエラーが返されました: (407) Proxy 認証が必要です

この問題を解決するには、次の手順に従って、Backup to URL プロセスで既定のプロキシ設定を使用できるようにするための構成ファイルを作成します。

  1. 次の xml を使用して、BackuptoURL.exe.config という名前の構成ファイルを作成します。

    <?xml version ="1.0"?>  
    <configuration>   
                    <system.net>   
                                    <defaultProxy enabled="true" useDefaultCredentials="true">   
                                                    <proxy usesystemdefault="true" />   
                                    </defaultProxy>   
                    </system.net>  
    </configuration>  
    
    
  2. SQL Server インスタンスの Binn フォルダーに構成ファイルを配置します。 たとえば、SQL Server がコンピューターの C ドライブにインストールされている場合は、構成ファイルを次の場所に配置します: C:\Program Files\Microsoft SQL Server\MSSQL12.<InstanceName>\MSSQL\Binn

Azure への SQL Server マネージド バックアップのトラブルシューティング

SQL Server マネージド バックアップは Backup to URL の上に構築されるので、前のセクションで説明したトラブルシューティングのヒントは、SQL Server マネージド バックアップを使用するデータベースまたはインスタンスに適用されます。 Azure への SQL Server マネージド バックアップのトラブルシューティングの詳細については、「sql Server マネージド バックアップを Azure にトラブルシューティングするに関するページを参照してください。

参照

Azure に格納されているバックアップからの復元