Azure VM 上の SQL Server の自動バックアップ
適用対象: Azure VM 上の SQL Server
自動バックアップでは、SQL Server 2016 以降の Standard、Enterprise、または Developer エディションを開始している Azure VM での SQL Server 上のすべての既存および新規データベースのための Microsoft Azure へのマネージド バックアップが自動的に構成されます。 これにより、永続的な Azure Blob Storage を利用する日常的なデータベースのバックアップを構成できます。
前提条件
Azure VM での SQL Server に自動バックアップを使用するには、次のものが必要です。
- SQL IaaS Agent 拡張機能に登録された Azure VM での SQL Server。
- Windows Server 2012 R2 以降。
- SQL Server 2016 以降。 SQL Server 2014 については、SQL Server 2014 の自動バックアップに関するページを参照してください。
- データベースの構成:
- ターゲット "ユーザー" データベースでは、完全復旧モデルを使用する必要があります。 システム データベースでは、完全復旧モデルを使う必要はありません。 しかし、
model
またはmsdb
のログのバックアップの作成を必要とする場合は、完全復旧モデルを使用する必要があります。 バックアップに対する完全復旧モデルの影響の詳細については、「完全復旧モデルでのバックアップ」を参照してください。 - SQL Server VM は SQL IaaS Agent 拡張機能に登録されており、自動バックアップ機能が有効になっています。 自動バックアップは拡張機能に依存するため、自動バックアップは、既定のインスタンスまたは単一の名前付きインスタンスからのターゲット データベースでのみサポートされます。 既定のインスタンスがなく、複数の名前付きインスタンスがある場合、SQL IaaS Agent 拡張機能は失敗し、自動バックアップは行われません。
- セカンダリ Always On 可用性グループ レプリカで自動バックアップを実行している場合、バックアップを成功させるにはレプリカが読み取り可能である必要があります。
- ターゲット "ユーザー" データベースでは、完全復旧モデルを使用する必要があります。 システム データベースでは、完全復旧モデルを使う必要はありません。 しかし、
設定
自動バックアップで構成できるオプションを次の表に示します。 実際の構成手順は、Azure ポータルと Azure Windows PowerShell コマンドのどちらを使用するかによって異なります。 自動バックアップでは既定でバックアップ圧縮が使われ、これを無効にすることはできません。
基本設定
設定 | 範囲 (既定値) | 説明 |
---|---|---|
自動化されたバックアップ | 有効/無効 (無効) | SQL Server 2016 以降の Developer、Standard、または Enterprise を実行している Azure VM の自動バックアップを有効または無効にします。 |
保有期間 | 1 から 90 日 (90 日) | サービスが msdb のバックアップ メタデータを保持する日数。 バックアップの保持期間が期限切れになると、メタデータは msdb から削除されますが、ファイルはストレージ コンテナーから削除されません。 ストレージ アカウントのライフサイクル管理ポリシーを使用して、ビジネス ニーズに応じてバックアップ保持期間とコスト管理のバランスを取ることができます。 |
ストレージ アカウント | Azure ストレージ アカウント | 自動バックアップのファイルを BLOB ストレージに保存するために使用する Azure ストレージ アカウント。 この場所にコンテナーが作成され、すべてのバックアップ ファイルが保存されます。 バックアップ ファイルの名前付け規則には、日付、時刻、およびデータベース GUID が含まれます。 |
暗号化 | 有効/無効 (無効) | バックアップ暗号化を有効または無効にします。 バックアップ暗号化を有効にすると、バックアップの復元に使用する証明書は、指定されたストレージ アカウントの同じ automaticbackup コンテナー内に、同じ名前付け規則を使用して配置されます。 パスワードが変更された場合、そのパスワードを使用して新しい証明書が生成されますが、以前のバックアップの復元には古い証明書が引き続き使用されます。 |
パスワード | パスワード テキスト | 暗号化キーのパスワード。 このパスワードは、暗号化を有効にした場合にのみ必須となります。 暗号化されたバックアップを復元するには、バックアップの作成時に使用した正しいパスワードおよび関連する証明書が必要です。 |
詳細設定
設定 | 範囲 (既定値) | 説明 |
---|---|---|
システム データベースのバックアップ | 有効/無効 (無効) | 有効にすると、この機能によりシステム データベース (master 、msdb 、および model ) もバックアップされます。 msdb および model データベースについては、ログのバックアップを作成する場合、完全復旧モデルであることを確認します。 master のログ バックアップは作成されません。また、tempdb のバックアップも作成されません。 |
バックアップ スケジュール | 手動/自動 (自動) | 既定では、バックアップ スケジュールはログの増加に基づいて自動的に決定されます。 手動のバックアップ スケジュールでは、ユーザーはバックアップの時間枠を指定することができます。 この場合、バックアップは指定された頻度で、特定の日の指定された時間枠内でのみ行われます。 |
完全バックアップの頻度 | 毎日/毎週 | 完全バックアップの頻度。 どちらの場合も、完全バックアップは次のスケジュールされた時間枠内に開始されます。 毎週を選択すると、すべてのデータベースが正常にバックアップされるまで、バックアップは数日にわたることがあります。 |
完全バックアップの開始時刻 | 00:00 – 23:00 (01:00) | 完全バックアップが行われる日の開始時刻。 |
完全バックアップの時間枠 | 1 – 23 時間 (1 時間) | 完全バックアップが行われる日の時間枠。 |
ログのバックアップの頻度 | 5 – 60 分 (60 分) | ログのバックアップの頻度。 |
Note
自動バックアップ スケジュールでは、ログの増加に基づいてバックアップが実行されます。 データベースが単純復旧モードのときに自動バックアップを使用することはお勧めしません。
完全バックアップの頻度を理解する
毎日および毎週の完全バックアップの違いについて理解することは重要です。 ここでは、次の 2 つのシナリオを例に説明します。
シナリオ 1:毎週のバックアップ
いくつかの大規模なデータベースを含む SQL Server VM が存在します。
月曜日に、次の設定で自動バックアップを有効にします。
- バックアップ スケジュール: 手動
- 完全バックアップの頻度: 毎週
- 完全バックアップの開始時刻: 01:00
- 完全バックアップの時間枠: 1 時間
これは、次の利用可能なバックアップの枠が火曜日の午前 1 時からの 1 時間であることを意味します。 その時点で、自動バックアップはデータベースを 1 つずつバックアップすることを開始します。 このシナリオでは、データベースが大規模なため、完全バックアップでは最初のいくつかのデータベースのバックアップが完了します。 ただし、1 時間後にすべてのデータベースがバックアップされたわけではありません。
この場合、自動バックアップによって、次の日、つまり水曜日の午前 1 時からの 1 時間で、残りのデータベースがバックアップされます。 この時にバックアップされていないデータベースがある場合は、次の日の同じ時刻にもう一度バックアップが試みられます。 これは、すべてのデータベースが正常にバックアップされるまで続きます。
翌週の火曜日になると、自動バックアップは再びすべてのデータベースのバックアップを開始します。
このシナリオは、自動バックアップが指定された時間枠内でのみ動作し、各データベースは 週 1 回バックアップされることを示しています。 また、すべてのバックアップを 1 日で完了できない場合は、バックアップが数日にまたがる可能性があることを示しています。
シナリオ 2: 毎日のバックアップ
いくつかの大規模なデータベースを含む SQL Server VM が存在します。
月曜日に、次の設定で自動バックアップを有効にします。
- バックアップ スケジュール: 手動
- 完全バックアップの頻度: 毎日
- 完全バックアップの開始時刻: 22:00
- 完全バックアップの時間枠: 6 時間
これは、次の利用可能なバックアップの枠が月曜日の午後 10 時からの 6 時間であることを意味します。 その時点で、自動バックアップはデータベースを 1 つずつバックアップすることを開始します。
その後、火曜日の午後 10 時からの 6 時間、すべてのデータベースの完全バックアップが再び開始されます。
重要
バックアップは各間隔で順番に行われます。 多数のデータベースがあるインスタンスの場合は、すべてのバックアップに対応する十分な時間でバックアップ間隔をスケジュールします。 指定された間隔内にバックアップを完了できない場合、一部のバックアップがスキップされ、単一データベースのバックアップ間の時間が構成されたバックアップ間隔時間より長くなり、復元ポイントの目標 (RPO) に悪影響を与える可能性があります。
新しい VM を構成する
Resource Manager デプロイ モデルで新しい SQL Server 2016 以降のマシンを作成するときに自動バックアップを構成するには、Azure portal を使用します。
[SQL Server の設定] タブで、[自動バックアップ] の [有効にする] を選択します。 自動バックアップを有効にするときは、以下の設定を構成できます。
- バックアップの保持期間 (最大 90 日間)
- バックアップに使用するストレージ アカウントとストレージ コンテナー
- バックアップの暗号化オプションとパスワード
- システム データベースのバックアップ
- バックアップ スケジュールの構成
バックアップを暗号化するには、 [有効] を選択します。 パスワードを指定します。 Azure は、バックアップを暗号化するための証明書を作成し、指定されたパスワードを使用してその証明書を保護します。
[ストレージ コンテナーを選んでください] を選んで、バックアップを格納するコンテナーを指定します。
既定ではスケジュールは自動的に設定されますが、[手動] を選んで独自のスケジュールを作成できます。これにより、バックアップの頻度、バックアップの時間枠、ログ バックアップの頻度を分単位で構成できます。
次の Azure Portal のスクリーンショットは、SQL Server VM を作成するときの SQL Automated Backup の設定を示しています。
既存の VM を構成する
既存の SQL Server 仮想マシンの場合、SQL 仮想マシン リソースに移動してから [バックアップ] を選択し、自動バックアップを構成します。
[有効化] を選んで、自動バックアップの設定を構成します。
保持期間 (最大 90 日間)、バックアップを格納するストレージ アカウントのコンテナー、暗号化、バックアップ スケジュールを構成できます。 既定では、スケジュールは自動設定されます。
独自のバックアップ スケジュールを設定する場合は、[手動] を選択し、システム データベースをバックアップするかどうか、およびトランザクション ログのバックアップ間隔 (分) を構成します。
終わったら、[バックアップ] 設定ページの下にある [適用] ボタンを選んで、変更を保存します。
自動バックアップを初めて有効にすると、Azure によりバックグラウンドで SQL Server IaaS Agent が構成されます。 この間、自動バックアップが構成されていることは、Azure ポータルに示されない可能性があります。 エージェントがインストールされ、構成されるまで数分待ちます。 その後、Azure ポータルに新しい設定が反映されます。
PowerShell での構成
PowerShell を使用して自動バックアップを構成できます。 開始する前に、次の操作を行う必要があります。
- 最新の Azure PowerShell をダウンロードしてインストールします。
- Windows PowerShell を開き、Connect-AzAccount コマンドを使用してそれをアカウントに関連付けます。
Note
この記事では、Azure と対話するために推奨される PowerShell モジュールである Azure Az PowerShell モジュールを使用します。 Az PowerShell モジュールの使用を開始するには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。
SQL Server IaaS 拡張機能のインストール
SQL Server 仮想マシンを Azure Portal からプロビジョニングした場合は、SQL Server IaaS 拡張機能は既にインストールされています。 これがお使いの VM にインストールされているかどうかは、Get-AzVM コマンドを呼び出して Extensions プロパティを調べることで確認できます。
$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"
(Get-AzVM -Name $vmname -ResourceGroupName $resourcegroupname).Extensions
SQL Server IaaS Agent 拡張機能がインストールされている場合、それは "SqlIaaSAgent" または "SQLIaaSExtension" として一覧表示されるはずです。また、拡張機能の ProvisioningState も "Succeeded" と表示されるはずです。
インストールされていない場合、またはプロビジョニングに失敗した場合は、次のコマンドを使ってインストールできます。 VM 名とリソース グループのほかに、VM が配置されているリージョン ( $region) を指定する必要があります。
$region = "EASTUS2"
Set-AzVMSqlServerExtension -VMName $vmname `
-ResourceGroupName $resourcegroupname -Name "SQLIaasExtension" `
-Version "2.0" -Location $region
現在の設定の確認
プロビジョニング中に自動バックアップを有効にした場合は、PowerShell を使って現在の構成を確認することができます。 Get-AzVMSqlServerExtension コマンドを実行して AutoBackupSettings プロパティを調べます。
(Get-AzVMSqlServerExtension -VMName $vmname -ResourceGroupName $resourcegroupname).AutoBackupSettings
次のような出力が表示されます。
Enable : True
EnableEncryption : False
RetentionPeriod : 30
StorageUrl : https://test.blob.core.windows.net/
StorageAccessKey :
Password :
BackupSystemDbs : False
BackupScheduleType : Manual
FullBackupFrequency : WEEKLY
FullBackupStartTime : 2
FullBackupWindowHours : 2
LogBackupFrequency : 60
出力で Enable が False に設定されていることが示された場合は、自動バックアップを有効にする必要があります。 自動バックアップは同じ方法で有効にし、構成できます。 詳細については、次のセクションを参照してください。
Note
変更直後に設定を確認すると、以前の構成値が表示されることがあります。 変更が適用されていることを確認するには、数分経ってから設定を再び確認します。
自動バックアップの構成
PowerShell を使用すると、自動バックアップを有効にできるほか、自動バックアップの構成や動作をいつでも変更することができます。
最初に、バックアップ ファイル用のストレージ アカウントを選択または作成します。 次のスクリプトでは、ストレージ アカウントが選ばれるか、存在しない場合は作成されます。
$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"
$storage_accountname = "yourstorageaccount"
$storage_url = "https://yourstorageaccount.blob.core.windows.net/"
$storage = Get-AzStorageAccount -ResourceGroupName $resourcegroupname `
-Name $storage_accountname -ErrorAction SilentlyContinue
If (-Not $storage)
{ $storage = New-AzStorageAccount -ResourceGroupName $resourcegroupname `
-Name $storage_accountname -SkuName Standard_GRS -Location $region }
Note
自動バックアップでは Premium Storage でのバックアップの保存をサポートしていませんが、Premium Storage を使用する VM ディスクからバックアップを取ることができます。
バックアップ用のストレージ アカウントでカスタム コンテナーを使用する場合は、次のスクリプトを使用してコンテナーをチェックするか、存在しない場合はコンテナーを作成します。
$storage_container = "backupcontainer"
New-AzStorageContainer -Name $storage_container -Context $storage.Context
if (!(Get-AzStorageAccount -StorageAccountName $storage_accountname -ResourceGroupName $resourcegroupname | Get-AzStorageContainer | Where-Object { $_.Name -eq $storage_container })){ `
New-AzStorageContainer -Name $storage_container -Context $storage.Context `
} `
else `
{ `
Write-Warning "Container $storage_container already exists." `
}
次のスクリプトを使用して、ストレージ アカウントのアクセス キーを取得します。
$accesskey = (Get-AzStorageAccountKey -ResourceGroupName $resourcegroupname -Name $storage_accountname)[0].value
次に Update-AzSqlVM コマンドを使って、Azure ストレージ アカウントにバックアップを保存するように、自動バックアップを有効にして設定を構成します。 この例では、バックアップは 10 日間保持されるよう設定されています。 システム データベースのバックアップが有効になっています。 完全バックアップは、毎週日曜日の 20:00 からの 2 時間でスケジュールされています。 ログのバックアップは 30 分ごとにスケジュールされています。
Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingBackupScheduleType Manual `
-AutoBackupSettingFullBackupFrequency Weekly
-AutoBackupSettingDaysOfWeek Saturday `
-AutoBackupSettingFullBackupStartTime 20 `
-AutoBackupSettingFullBackupWindowHour 2 `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod 10 `
-AutoBackupSettingLogBackupFrequency 30 `
-AutoBackupSettingStorageContainerName $storage_container `
-AutoBackupSettingBackupSystemDb
SQL Server IaaS エージェントのインストールと構成には数分かかる場合があります。
暗号化を有効にするには、-AutoBackupSettingEnableEncryption パラメーターと、-AutoBackupSettingPassword パラメーターのパスワード (セキュリティで保護された文字列) を渡すように、前のスクリプトを変更します。 次のスクリプトでは、前の例の自動バックアップ設定を有効にし、暗号化を追加します。
$password = "r@ndom Va1ue"
$encryptionpassword = $password | ConvertTo-SecureString -AsPlainText -Force
Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingBackupScheduleType Manual `
-AutoBackupSettingFullBackupFrequency Weekly `
-AutoBackupSettingDaysOfWeek Saturday `
-AutoBackupSettingFullBackupStartTime 20 `
-AutoBackupSettingFullBackupWindowHour 2 `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod 10 `
-AutoBackupSettingLogBackupFrequency 30 `
-AutoBackupSettingEnableEncryption `
-AutoBackupSettingPassword $encryptionpassword `
-AutoBackupSettingStorageContainerName $storage_container `
-AutoBackupSettingBackupSystemDb
設定が適用されたことを確認するには、自動バックアップの構成を確認します。
自動バックアップを無効にする
自動バックアップを無効にするには、Update-AzSqlVM コマンド内で -AutoBackupSettingEnable パラメーターを $false に設定して同じスクリプトを実行します。 値を $false に設定するとその機能は無効化されます。 インストールと同様に、自動バックアップの無効化には数分かかる場合があります。
Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable:$false
サンプル スクリプト
次のスクリプトでは、お使いの VM で自動バックアップを有効にして構成するようカスタマイズできる変数のセットを提供しています。 場合によっては、要件に基づきスクリプトをカスタマイズする必要があるかもしれません。 たとえば、システム データベースのバックアップを無効にしたり、暗号化を有効にする場合は変更が必要です。
$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"
$region = "Azure region name such as EASTUS2"
$storage_accountname = "yourstorageaccount"
$storage_url = "https://yourstorageaccount.blob.core.windows.net/"
$retentionperiod = 10
$backupscheduletype = "Manual"
$fullbackupfrequency = "Weekly"
$fullbackupdayofweek = "Saturday"
$fullbackupstarthour = "20"
$fullbackupwindow = "2"
$logbackupfrequency = "30"
# ResourceGroupName is the resource group which is hosting the VM where you are deploying the SQL Server IaaS Extension
Set-AzVMSqlServerExtension -VMName $vmname `
-ResourceGroupName $resourcegroupname -Name "SQLIaasExtension" `
-Version "2.0" -Location $region
# Creates/use a storage account to store the backups
$storage = Get-AzStorageAccount -ResourceGroupName $resourcegroupname `
-Name $storage_accountname -ErrorAction SilentlyContinue
If (-Not $storage)
{ $storage = New-AzStorageAccount -ResourceGroupName $resourcegroupname `
-Name $storage_accountname -SkuName Standard_GRS -Location $region }
# Creates/uses a custom storage account container
$storage_container = "yourbackupcontainer"
if (!(Get-AzStorageAccount -StorageAccountName $storage_accountname -ResourceGroupName $resourcegroupname | Get-AzStorageContainer | Where-Object { $_.Name -eq $storage_container })){ `
New-AzStorageContainer -Name $storage_container -Context $storage.Context `
} `
else `
{ `
Write-Warning "Container $storage_container already exists." `
}
# Get storage account access key
$accesskey = (Get-AzStorageAccountKey -ResourceGroupName $resourcegroupname -Name $storage_accountname)[0].value
# Configure Automated Backup settings
Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingBackupScheduleType $backupscheduletype `
-AutoBackupSettingFullBackupFrequency $fullbackupfrequency `
-AutoBackupSettingDaysOfWeek $fullbackupdayofweek `
-AutoBackupSettingFullBackupStartTime $fullbackupstarthour `
-AutoBackupSettingFullBackupWindowHour $fullbackupwindow `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod $retentionperiod `
-AutoBackupSettingLogBackupFrequency $logbackupfrequency `
-AutoBackupSettingStorageContainerName $storage_container `
-AutoBackupSettingBackupSystemDb
暗号化証明書を使用したバックアップをする
バックアップを暗号化する場合は、暗号化証明書が生成され、バックアップと同じストレージ アカウントに保存されます。 このシナリオでは、バックアップの暗号化と暗号化解除に用いられる暗号化証明書を保護するために使用されるパスワードも入力する必要があります。 これにより、この機能の構成の範囲を超えたバックアップについて心配する必要はありません。また、バックアップがセキュリティで保護されていることを信頼できます。
バックアップ暗号化が有効になっている場合は、データベースの復元性を確保するために、暗号化証明書が正常に作成およびアップロードされたかどうかを確かめることを強くお勧めします。 これを行うには、データベースをすぐに作成し、暗号化証明書とデータを新しく作成されたコンテナーに適切にバックアップされたことを確認します。 これにより、すべてが正しく構成され、異常が発生しなかったことが示されます。
何らかの理由で証明書のアップロードに失敗した場合は、証明書マネージャーを使用して証明書をエクスポートして保存できます。 ただし、同じ VM に保存する必要はありません。これは、VM がダウンしているときに確実に証明書にアクセスできないようにするためです。 自動バックアップ構成を変更または作成した後に証明書が適切にバックアップされたかどうかを確認するには、VM のイベント ログをチェックし、バックアップが失敗した場合は、こちらのエラー メッセージが表示されます:
証明書が正しくバックアップされている場合は、イベント ログに次のメッセージが表示されます:
一般的な方法として、バックアップが正常かどうかを随時チェックすることをお勧めします。 バックアップを復元できるようにするには、次の操作を行う必要があります:
暗号化証明書がバックアップされており、パスワードを覚えていることを確認します。 これを行わないと、バックアップの暗号化を解除して復元することはできません。 何らかの理由で証明書が適切にバックアップされていない場合は、次の T-SQL クエリを実行して手動でこれを行うことができます:
BACKUP MASTER KEY TO FILE = <file_path> ENCRYPTION BY PASSWORD = <password> BACKUP CERTIFICATE [AutoBackup_Certificate] TO FILE = <file_path> WITH PRIVATE KEY (FILE = <file_path>, ENCRYPTION BY PASSWORD = <password>)
バックアップ ファイルが少なくとも 1 個の完全バックアップでアップロードされていることを確認します。 間違いが発生するため、VM を削除する前に、または VM が破損した場合に備えて、常に少なくとも 1 個は完全バックアップがあることを確認する必要があります。そうすればデータに引き続きアクセスできます。 VM のデータ ディスクを削除する前に、ストレージ内のバックアップが安全かつ回復可能であることを確認する必要があります。
監視
SQL Server 2016 以降で自動バックアップを監視するには、主なオプションが 2 つあります。 自動バックアップでは SQL Server マネージド バックアップ機能を使用するため、この両方に同じ監視手法が適用されます。
まず、msdb.managed_backup.sp_get_backup_diagnostics を呼び出すことによって状態をポーリングできます。 または、msdb.managed_backup.fn_get_health_status テーブル値関数のクエリを実行します。
もう 1 つのオプションは、通知に組み込みのデータベース メール機能を利用する方法です。
- msdb.managed_backup.sp_set_parameter ストアド プロシージャを呼び出して、SSMBackup2WANotificationEmailIds パラメーターにメール アドレスを割り当てます。
- SendGrid が Azure VM から電子メールを送信できるようにします。
- SMTP サーバーとユーザー名を使用してデータベース メールを構成します。 データベース メールは、SQL Server Management Studio または Transact-SQL コマンドで構成できます。 詳細については、「データベース メール」を参照してください。
- データベース メールを使用するように SQL Server エージェントを構成します。
- SMTP ポートがローカルの VM ファイアウォールと、その VM のネットワーク セキュリティ グループの両方で許可されていることを確認します。
既知の問題
自動バックアップ機能を使うときは、以下の既知の問題を考慮してください。
Azure portal で自動バックアップを有効にできない
次の表は、Azure portal から自動バックアップを有効にするときに問題が発生した場合に考えられる解決策です。
症状 | 解決策 |
---|---|
IaaS 拡張機能が失敗状態の場合、自動バックアップを無効にできない | SQL IaaS Agent 拡張機能が失敗状態の場合は、それを修復します。 |
数百のデータベースがある場合、自動バックアップを有効にできない | これは、SQL IaaS Agent 拡張機能に関する既知の制限です。 この問題を回避するには、SQL IaaS Agent 拡張機能を使って自動バックアップを構成する代わりに、マネージド バックアップを直接有効にできます。 |
メタデータの問題により、自動バックアップを有効にできない | SQL IaaS Agent サービスを停止します。 次の T-SQL コマンドを実行します: use msdb exec autoadmin_metadata_delete 。 SQL IaaS Agent サービスを開始し、Azure portal から自動バックアップをもう一度有効にしてみます。 |
FCI の自動バックアップを有効にする | プライベート エンドポイントを使うバックアップはサポートされていません。 バックアップには、完全なストレージ アカウント URI を使ってください。 |
自動バックアップを使用して複数の SQL インスタンスをバックアップする | 現在、自動バックアップでサポートされている SQL Server インスタンスは 1 つのみです。 複数の名前付きインスタンスと、既定のインスタンスがある場合、自動バックアップは既定のインスタンスで動作します。 複数の名前付きインスタンスがあり、既定のインスタンスがない場合、自動バックアップを有効にすると失敗します。 |
アカウントとアクセス許可が原因で、自動バックアップを有効にできない | 次の点を確認します。 - SQL Server エージェントが実行されています。 - SQL Server と Azure portal 内の SQL 仮想マシン リソースの両方で、NT Service\SqlIaaSExtensionQuery アカウントに自動バックアップ機能のための適切なアクセス許可があります。 - SA アカウントの名前は変更されていませんが、無効にすることは許容されます。 |
SQL 2016 以降の自動バックアップが失敗する | ストレージ アカウントで [Allow Blob Public Access] (BLOB パブリック アクセスを許可する) を有効にします。 これにより、既知の問題に対する一時的な回避策が提供されます。 |
自動またはマネージド バックアップに関する一般的な問題
次の表は、自動バックアップを使うと発生する可能性のあるエラーと解決策の一覧です。
症状 | 解決策 |
---|---|
ストレージ アカウントへの接続エラーやタイムアウト エラーが原因で、自動またはマネージド バックアップが失敗する | 仮想ネットワークのネットワーク セキュリティ グループ (NSG) と Windows ファイアウォールが、仮想マシン (VM) からポート 443 のストレージ アカウントへのアウトバウンド接続をブロックしていないことを調べます。 |
メモリや IO の負荷が原因で、自動またはマネージド バックアップが失敗する | IO や VM の制限を超えた場合は、最大サーバー メモリを増やしたり、ディスクや VM のサイズを変更したりできるかどうかを確認します。 可用性グループを使っている場合は、バックアップをセカンダリ レプリカにオフロードすることを検討します。 |
サーバーの名前を変更した後に自動バックアップが失敗する | マシンのホスト名を変更した場合は、SQL Server 内のホスト名も変更する必要があります。 |
エラー: 操作は内部エラーのために失敗しました。 引数を空の文字列にすることはできません。\r\nパラメーター名: sas Token 後で再試行してください | これは、SQL Server エージェント サービスに正しい偽装アクセス許可が付与されていないことが原因である可能性があります。 この問題を解決するには、別のアカウントを使うように SQL Server エージェント サービスを変更します。 |
エラー: コンテナーの URL が無効であったため、Microsoft Azure への SQL Server マネージド バックアップでは、SQL Server インスタンスの既定のバックアップ設定を構成できません。 また、SAS 資格情報が無効である可能性もあります | このエラーは、多数のデータベースがある場合に発生する可能性があります。 自動バックアップの代わりにマネージド バックアップを使います。 |
VM の再起動後に自動バックアップ ジョブが失敗した | SQL エージェント サービスが稼働していることを調べます。 |
マネージド バックアップが断続的に失敗する/エラー: 実行タイムアウトの期限切れ | これは、SQL Server 2019 に対しては CU18 で、SQL Server 2014-2017 に対しては [KB4040376] で修正されている既知の問題です。 |
エラー: リモート サーバーがエラーを返しました: (403) 許可されていません | SQL IaaS Agent 拡張機能を修復します。 |
エラー 3202: ストレージ アカウントに書き込めませんでした: 13 (データが無効です) | ストレージ コンテナーの不変 BLOB ポリシーを削除し、ストレージ アカウントで TLS 1.0 以上を使うようにしてください。 |
エラー 3063: バックアップ ブロック BLOB デバイスに書き込みます。 デバイスで許可されているブロック数の上限に達しました。 | これは、Readable 構成が NO に設定されているセカンダリ Always On 可用性グループ レプリカから自動バックアップを実行している場合に発生する可能性があります。 セカンダリ レプリカで自動バックアップを機能させるには、レプリカを読み取り可能にする必要があります。 |
特定の日のバックアップをスケジュールできません | SQL Server 2014 の自動バックアップを使用している場合、これは想定されることです。 SQL Server 2016 以降では、バックアップ スケジュールを構成できます。 |
自動バックアップまたはマネージド バックアップを無効にできない
次の表は、Azure portal から自動バックアップを無効にするときに問題が発生した場合に考えられる解決策です。
症状 | 解決策 |
---|---|
IaaS 拡張機能が失敗状態の場合に、自動バックアップの無効化が失敗する | SQL IaaS Agent 拡張機能が失敗状態の場合は、それを修復します。 |
メタデータの問題が原因で、自動バックアップの無効化が失敗する | SQL IaaS Agent サービスを停止します。 次の T-SQL コマンドを実行します: use msdb exec autoadmin_metadata_delete 。 SQL IaaS Agent サービスを開始し、Azure portal から自動バックアップを無効にしてみます。 |
アカウントとアクセス許可が原因で、自動バックアップを無効にできない | 次の点を確認します。 - SQL Server エージェントが実行されています。 - SQL Server と Azure portal 内の SQL 仮想マシン リソースの両方で、NT Service\SqlIaaSExtensionQuery アカウントに自動バックアップ機能のための適切なアクセス許可があります。 - SA アカウントの名前は変更されていませんが、無効にすることは許容されます。 |
SQL Server バックアップを作成しているサービスまたはアプリケーションを確認したい
- SQL Server Management Studio (SSMS) のオブジェクト エクスプローラーで、データベースを右クリックし、[レポート]>[標準レポート]>[イベントをバックアップおよび復元] を選びます。 レポートでは、 [正常に実行されたバックアップ操作数] セクションを展開してバックアップ履歴を表示できます。
- Azure で、または仮想デバイスに対して、複数のバックアップが表示される場合は、Azure Backup を使って個々の SQL データベースをバックアップしているかどうか、または
NT Authority/SYSTEM
アカウントを使う仮想デバイスに仮想マシン スナップショットを作成しているかどうかを調べます。 そうでない場合は、Windows の [サービス] コンソール (services.msc) を確認して、バックアップを作成している可能性のあるサードパーティのアプリケーションを特定します。
次のステップ
自動バックアップでは、Azure VM でマネージド バックアップが構成されます。 そのため、マネージド バックアップに関するドキュメントを見直して、動作と影響を理解することが重要です。
Azure VM の SQL Server のバックアップと復元に関するその他のガイダンスについては、Azure Virtual Machines での SQL Server のバックアップと復元に関する記事を参照してください。
その他の利用可能なオートメーション タスクについては、 SQL Server IaaS Agent 拡張機能に関するページをご覧ください。
Azure VM で SQL Server を実行する方法の詳細については、Azure 仮想マシンにおける SQL Server の概要に関するページをご覧ください。