Azure VM での SQL Server Backup についてAbout SQL Server Backup in Azure VMs

SQL Server データベースは、低い回復ポイントの目標値 (RPO) と長期のリテンション期間を必要とする重要なワークロードです。SQL Server databases are critical workloads that require a low recovery point objective (RPO) and long-term retention. Azure Backup を使用して、Azure VM 上で稼働している SQL Server データベースをバックアップできます。You can back up SQL Server databases running on Azure VMs using Azure Backup.

バックアップ プロセスBackup process

このソリューションでは、SQL ネイティブ API シリーズを活用して、SQL データベースのバックアップを作成します。This solution leverages the SQL native APIs to take backups of your SQL databases.

  • 保護し、その中のデータベースに対してクエリを実行する SQL Server VM を指定すると、Azure Backup サービスにより、AzureBackupWindowsWorkload  拡張機能という名前のワークロード バックアップ拡張機能が VM 内にインストールされます。Once you specify the SQL Server VM that you want to protect and query for the databases in it, Azure Backup service will install a workload backup extension on the VM by the name AzureBackupWindowsWorkload extension.

  • この拡張機能は、コーディネーターと SQL プラグインで構成されています。This extension consists of a coordinator and a SQL plugin. コーディネーターは、バックアップの構成、バックアップ、復元など、さまざまな操作のワークフローのトリガーを処理し、プラグインは実際のデータ フローを処理します。While the coordinator is responsible for triggering workflows for various operations like configure backup, backup and restore, the plugin is responsible for actual data flow.

  • この VM 上のデータベースを検出できるようにするために、Azure Backup により、アカウント  NT SERVICE\AzureWLBackupPluginSvc が作成されます。To be able to discover databases on this VM, Azure Backup creates the account NT SERVICE\AzureWLBackupPluginSvc. このアカウントはバックアップと復元に使用され、SQL sysadmin アクセス許可を必要とします。This account is used for backup and restore and requires SQL sysadmin permissions. Azure Backup では、データベースの検出と照会に NT AUTHORITY\SYSTEM アカウントが利用されます。そのため、このアカウントは SQL 上でパブリック ログインである必要があります。Azure Backup leverages the NT AUTHORITY\SYSTEM account for database discovery/inquiry, so this account need to be a public login on SQL. SQL Server VM を Azure Marketplace から作成しなかった場合、エラー  UserErrorSQLNoSysadminMembership が発生する可能性があります。If you didn't create the SQL Server VM from the Azure Marketplace, you might receive an error UserErrorSQLNoSysadminMembership. これが発生した場合、 こちらの手順に従ってくださいIf this occurs follow these instructions.

  • 選択したデータベースに対して保護の構成をトリガーすると、バックアップ サービスにより、コーディネーターに対してバックアップ スケジュールとその他のポリシーの詳細が設定されます。これにより、拡張機能が VM 内にローカルにキャッシュされます。Once you trigger configure protection on the selected databases, the backup service sets up the coordinator with the backup schedules and other policy details, which the extension caches locally on the VM

  • スケジュールされた時刻になると、コーディネーターがプラグインと通信し、VDI を使用して SQL サーバーからバックアップ データのストリーム配信を開始します。At the scheduled time, the coordinator communicates with the plugin and it starts streaming the backup data from the SQL server using VDI.

  • プラグインは Recovery Services コンテナーに直接データを送信するため、ステージングの場所は必要ありません。The plugin sends the data directly to the recovery services vault, thus eliminating the need for a staging location. データは Azure Backup サービスによって暗号化され、ストレージ アカウント内に格納されます。The data is encrypted and stored by the Azure Backup service in storage accounts.

  • データ転送が完了すると、コーディネーターはバックアップ サービスを使用してコミットを確認します。When the data transfer is complete, coordinator confirms the commit with the backup service.

    SQL のバックアップ アーキテクチャ

開始する前にBefore you start

開始する前に、以下を確認します。Before you start, verify the below:

  1. Azure で SQL Server インスタンスを稼働させていることを確認する。Make sure you have a SQL Server instance running in Azure. マーケットプレースで SQL Server インスタンスをすばやく作成できます。You can quickly create a SQL Server instance in the marketplace.
  2. 機能の考慮事項シナリオのサポートを確認する。Review the feature consideration and scenario support.
  3. このシナリオに関する一般的な質問を確認する。Review common questions about this scenario.

シナリオのサポートScenario support

サポートSupport 詳細Details
サポートされているデプロイSupported deployments SQL Marketplace の Azure VM と、Marketplace 以外の (SQL Server が手動でインストールされる) VM がサポートされています。SQL Marketplace Azure VMs and non-Marketplace (SQL Server manually installed) VMs are supported.
サポートされている地域Supported geos オーストラリア南東部 (ASE)、オーストラリア東部 (AE)Australia South East (ASE), East Australia (AE)
ブラジル南部 (BRS)Brazil South (BRS)
カナダ中部 (CNC)、カナダ東部 (CE)Canada Central (CNC), Canada East (CE)
東南アジア (SEA)、東アジア (EA)South East Asia (SEA), East Asia (EA) 
米国東部 (EUS)、米国東部 2 (EUS2)、米国中西部 (WCUS)、米国西部 (WUS)、米国西部 2 (WUS 2)、米国中北部 (NCUS)、米国中部 (CUS)、米国中南部 (SCUS)East US (EUS), East US 2 (EUS2), West Central US (WCUS), West US (WUS); West US 2 (WUS 2) North Central US (NCUS) Central US (CUS) South Central US (SCUS)
インド中部 (INC)、インド南部 (INS)India Central (INC), India South (INS)
東日本 (JPE)、西日本 (JPW)Japan East (JPE), Japan West (JPW)
韓国中部 (KRC)、韓国南部 (KRS)Korea Central (KRC), Korea South (KRS)
北ヨーロッパ (NE)、西ヨーロッパNorth Europe (NE), West Europe
英国南部 (UKS)、英国西部 (UKW)UK South (UKS), UK West (UKW)
サポートされているオペレーティング システムSupported operating systems Windows Server 2016、Windows Server 2012 R2、Windows Server 2012Windows Server 2016, Windows Server 2012 R2, Windows Server 2012

Linux は現在サポートされていません。Linux isn't currently supported.
サポートされる SQL Server のバージョンSupported SQL Server versions SQL Server 2017、SQL Server 2016、SQL Server 2014、SQL Server 2012。SQL Server 2017; SQL Server 2016, SQL Server 2014, SQL Server 2012.

Enterprise、Standard、Web、Developer、Express。Enterprise, Standard, Web, Developer, Express.
サポートされている .NET バージョンSupported .NET versions VM 内にインストールされている .NET Framework 4.5.2 以降.NET Framework 4.5.2 and above installed on the VM

SQL Server 2008 および SQL Server 2008 R2 のサポートSupport for SQL Server 2008 and SQL Server 2008 R2

Azure Backup による EOS SQL Sever (SQL Server 2008 および SQL Server 2008 R2) のサポートが最近発表されました。Azure Backup has recently announced support for EOS SQL Severs - SQL Server 2008 and SQL Server 2008 R2. このソリューションは、現在、EOS SQL Server 用のプレビュー版であり、次の構成をサポートしています。The solution is currently in preview for EOS SQL Server and supports the following configuration:

  1. Windows 2008 R2 SP1 で実行されている SQL Server 2008 および SQL Server 2008 R2SQL Server 2008 and SQL Server 2008 R2 running on Windows 2008 R2 SP1
  2. .NET Framework 4.5.2 以降を VM にインストールする必要がある.NET Framework 4.5.2 and above needs to be installed on the VM
  3. FCI とミラー化されたデータベースのバックアップはサポートされないBackup for FCI and mirrored databases isn’t supported

この機能の一般提供が開始されるまで、ユーザーはこの機能について課金されません。Users will not be charged for this feature till the time it is generally available. その他の機能の考慮事項と制限事項もすべてこれらのバージョンに適用されます。All of the other feature considerations and limitations apply to these versions as well. レジストリ キーの設定など、SQL Servers 2008 および 2008 R2 で保護を構成する前に、前提条件を参照してください (この機能が一般提供された場合、この手順は不要です)。Kindly refer to the prerequisites before you configure protection on SQL Servers 2008 and 2008 R2 which include setting the registry key (this step would not be required when the feature is generally available).

機能の考慮事項と制限事項Feature consideration and limitations

  • SQL Server のバックアップは、Azure portal または PowerShell を使用して構成できます。SQL Server backup can be configured in the Azure portal or PowerShell. CLI はサポートされていません。We do not support CLI.
  • このソリューションは、Azure Resource Manager VM とクラシック VM のどちらの種類のデプロイでもサポートされます。The solution is supported on both kinds of deployments - Azure Resource Manager VMs and classic VMs.
  • SQL Server を稼働している VM では、Azure パブリック IP アドレスにアクセスするためにインターネット接続を必要とします。VM running SQL Server requires internet connectivity to access Azure public IP addresses.
  • SQL Server フェールオーバー クラスター インスタンス (FCI) と SQL Server Always on フェールオーバー クラスター インスタンスはサポートされません。SQL Server Failover Cluster Instance (FCI) and SQL Server Always on Failover Cluster Instance are not supported.
  • ミラー データベースおよびデータベース スナップショットのバックアップ操作および復元操作はサポートされていません。Back up and restore operations for mirror databases and database snapshots aren't supported.
  • スタンドアロンの SQL Server インスタンスまたは SQL Always On 可用性グループをバックアップするために複数のバックアップ ソリューションを使用すると、バックアップに失敗する可能性があるため、そうしないようにしてください。Using more than one backup solutions to back up your standalone SQL Server instance or SQL Always on availability group may lead to backup failure; refrain from doing so.
  • また、可用性グループの 2 つのノードを、同じまたは異なるソリューションを使用して個別にバックアップすると、バックアップに失敗する可能性があります。Backing up two nodes of an availability group individually with same or different solutions, may also lead to backup failure.
  • 読み取り専用データベースについては、Azure Backup ではバックアップの種類として完全とコピーのみの完全だけをサポートしています。Azure Backup supports only Full and Copy-only Full backup types for Read-only databases
  • 多数のファイルがあるデータベースは保護できません。Databases with large number of files can't be protected. サポートされるファイルの最大数は約 1,000 個です。The maximum number of files that is supported is ~1000.
  • コンテナーあたり約 2,000 個の SQL Server データベースをバックアップできます。You can back up to ~2000 SQL Server databases in a vault. データベースの数が多い場合、複数のコンテナーを作成できます。You can create multiple vaults in case you have a greater number of databases.
  • 一度に最大 50 個のデータベースのバックアップを構成できます。この制限により、バックアップの負荷が最適化されます。You can configure backup for up to 50 databases in one go; this restriction helps optimize backup loads.
  • サポートされているデータベースの最大サイズは 2 TB です。これを超えるサイズの場合は、パフォーマンスの問題が生じる可能性があります。We support databases up to 2TB in size; for sizes greater than that, performance issues may come up.
  • サーバーあたりいくつのデータベースを保護できるかを把握するには、帯域幅、VM のサイズ、バックアップの頻度、データベースのサイズなどの要因を考慮する必要があります。Microsoft では、これらの数を自分で計算するのに役立つプランナーに取り組んでいます。To have a sense of as to how many databases can be protected per server, we need to consider factors such as bandwidth, VM size, backup frequency, database size, etc. We are working on a planner that would help you calculate these numbers on you own. 間もなく公開する予定です。We will be publishing it shortly.
  • 可用性グループの場合は、バックアップはいくつかの要因に基づいて異なるノードから作成されます。In case of availability groups, backups are taken from the different nodes based on a few factors. 可用性グループのバックアップ動作を以下にまとめています。The backup behavior for an availability group is summarized below.

Always On 可用性グループの場合のバックアップ動作Back up behavior in case of Always on availability groups

バックアップの構成は、AG の 1 つのノードでのみ行うことをお勧めします。It is recommended that the backup is configured on only one node of an AG. バックアップは必ず、プライマリ ノードと同じリージョンに構成してください。Backup should always be configured in the same region as the primary node. つまり、バックアップの構成場所のリージョンには必ず、プライマリ ノードが存在している必要があります。In other words, you always need the primary node to be present in the region in which you are configuring backup. AG のすべてのノードがバックアップの構成場所と同じリージョンにあれば問題ありません。If all the nodes of the AG are in the same region in which the backup is configured, there isn’t any concern.

複数リージョンにまたがる AGFor cross-region AG

  • バックアップの設定に関係なく、バックアップの構成場所とは異なるリージョン内のノードからバックアップが実行されることはありません。Regardless of the backup preference, backups won’t happen from the nodes that are not in the same region where the backup is configured. 複数リージョンにまたがるバックアップはサポートされないためです。This is because the cross-region backups are not supported. ノードが 2 つしか存在せず、なおかつ、セカンダリ ノードが別のリージョンに存在する場合、プライマリ ノード側からは引き続きがバックアップが実行されます (ただし、バックアップの設定が "セカンダリのみ" になっている場合を除く)。If you have only 2 nodes and the secondary node is in the other region; in this case, the backups will continue to happen from primary node (unless your backup preference is ‘secondary only’).
  • バックアップの構成場所とは異なるリージョンへのフェールオーバーが実行された場合、フェールオーバーされた側のリージョン内のノードでは、バックアップに失敗します。If a fail-over happens to a region different than the one in which the backup is configured, backups would fail on the nodes in the failed-over region.

バックアップ設定とバックアップの種類 (完全/差分/ログ/コピーのみの完全) に応じて、バックアップは特定のノード (プライマリ/セカンダリ) から作成されます。Depending on the backup preference and backups types (full/differential/log/copy-only full), backups are taken from a particular node (primary/secondary).

  • バックアップの設定:プライマリBackup preference: Primary
バックアップの種類Backup Type NodeNode
完全Full プライマリPrimary
差分Differential プライマリPrimary
ログLog プライマリPrimary
コピーのみの完全Copy-Only Full プライマリPrimary
  • バックアップの設定:セカンダリのみBackup preference: Secondary Only
バックアップの種類Backup Type NodeNode
完全Full プライマリPrimary
差分Differential プライマリPrimary
ログLog セカンダリSecondary
コピーのみの完全Copy-Only Full セカンダリSecondary
  • バックアップの設定:セカンダリBackup preference: Secondary
バックアップの種類Backup Type NodeNode
完全Full プライマリPrimary
差分Differential プライマリPrimary
ログLog セカンダリSecondary
コピーのみの完全Copy-Only Full セカンダリSecondary
  • バックアップの設定なしNo Backup preference
バックアップの種類Backup Type NodeNode
完全Full プライマリPrimary
差分Differential プライマリPrimary
ログLog セカンダリSecondary
コピーのみの完全Copy-Only Full セカンダリSecondary

VM のアクセス許可を設定するSet VM permissions

SQL Server で検出を実行すると、Azure Backup により以下が行われます。When you run discovery on a SQL Server, Azure Backup does the following:

  • AzureBackupWindowsWorkload 拡張機能を追加します。Adds the AzureBackupWindowsWorkload extension.
  • 仮想マシン上のデータベースを検出するために、NT SERVICE\AzureWLBackupPluginSvc アカウントが作成されます。Creates an NT SERVICE\AzureWLBackupPluginSvc account to discover databases on the virtual machine. このアカウントはバックアップと復元に使用され、SQL sysadmin アクセス許可を必要とします。This account is used for a backup and restore and requires SQL sysadmin permissions.
  • VM 上で実行されているデータベースを検出します。Azure Backup は NT AUTHORITY\SYSTEM アカウントを使用します。Discovers databases that are running on a VM, Azure Backup uses the NT AUTHORITY\SYSTEM account. このアカウントは SQL でのパブリック サインインである必要があります。This account must be a public sign-in on SQL.

Azure Marketplace で SQL Server VM を作成しなかった場合、または SQL 2008 および 2008 R2 を使用している場合、UserErrorSQLNoSysadminMembership エラーが発生する可能性があります。If you didn't create the SQL Server VM in the Azure Marketplace or if you are on SQL 2008 and 2008 R2, you might receive a UserErrorSQLNoSysadminMembership error.

Windows 2008 R2 で SQL 2008 および 2008 R2 を実行している場合にアクセス許可を付与するには、こちらを参照してください。For giving permissions in case of SQL 2008 and 2008 R2 running on Windows 2008 R2, refer here.

その他のすべてのバージョンでは、次の手順を使用してアクセス許可を修正します。For all other versions, fix permissions with the following steps:

  1. SQL Server sysadmin アクセス許可があるアカウントを使用して、SQL Server Management Studio (SSMS) にサインインします。Use an account with SQL Server sysadmin permissions to sign in to SQL Server Management Studio (SSMS). 特殊な権限が必要でない限り、Windows 認証が機能するはずです。Unless you need special permissions, Windows authentication should work.

  2. SQL Server で、Security/Logins フォルダーを開きます。On the SQL Server, open the Security/Logins folder.

    セキュリティ/ログイン フォルダーを開いてアカウントを表示する

  3. [ログイン] フォルダーを右クリックし、 [新しいログイン] を選択します。Right-click the Logins folder and select New Login. [ログイン - 新規作成][検索] を選択します。In Login - New, select Search.

    [ログイン - 新規作成] ダイアログ ボックスで [検索] を選択する

  4. Windows 仮想サービス アカウント NT SERVICE\AzureWLBackupPluginSvc は、仮想マシンの登録と SQL 検出フェーズ中に作成済みです。The Windows virtual service account NT SERVICE\AzureWLBackupPluginSvc was created during the virtual machine registration and SQL discovery phase. [選択するオブジェクト名を入力します] に示されているようにアカウント名を入力します。Enter the account name as shown in Enter the object name to select. [名前の確認] を選択して名前解決を行います。Select Check Names to resolve the name. Click OK.Click OK.

    [名前の確認] を選択して不明なサービス名を解決する

  5. [サーバー ロール] で、sysadmin ロールが選択されていることを確認します。In Server Roles, make sure the sysadmin role is selected. Click OK.Click OK. この時点で、必要な権限が揃っているはずです。The required permissions should now exist.

    sysadmin サーバー ロールが選択されていることを確認する

  6. 次にデータベースを Recovery Services コンテナーと関連付けます。Now associate the database with the Recovery Services vault. Azure portal の [保護されたサーバー] 一覧で、エラー状態にあるサーバーを右クリックし、 [DB の再検出] を選択します。In the Azure portal, in the Protected Servers list, right-click the server that's in an error state > Rediscover DBs.

    サーバーに適切な権限があることを確認する

  7. [通知] 領域で進行状況をチェックします。Check progress in the Notifications area. 選択したデータベースが検出されたら、成功のメッセージが表示されます。When the selected databases are found, a success message appears.

    デプロイの成功メッセージ

注意

SQL Server に SQL Server の複数のインスタンスがインストールされている場合は、すべての SQL インスタンスに NT Service\AzureWLBackupPluginSvc アカウントに対する sysadmin アクセス許可を追加する必要があります。If your SQL Server has multiple instances of SQL Server installed, then you must add sysadmin permission for NT Service\AzureWLBackupPluginSvc account to all SQL instances.

SQL sysadmin に SQL 2008 および SQL 2008 R2 のアクセス許可を付与するGive SQL sysadmin permissions for SQL 2008 and SQL 2008 R2

SQL Server インスタンスに NT AUTHORITY\SYSTEM および NT Service\AzureWLBackupPluginSvc ログインを追加します。Add NT AUTHORITY\SYSTEM and NT Service\AzureWLBackupPluginSvc logins to the SQL Server Instance:

  1. オブジェクト エクスプローラーで SQL Server インスタンスにアクセスします。Go the SQL Server Instance in the Object explorer.

  2. [セキュリティ] -> [ログイン] に移動しますNavigate to Security -> Logins

  3. [ログイン] を右クリックし、 [新しいログイン] をクリックしますRight click on the Logins and click New Login…

    SSMS を使用した新しいログイン

  4. [全般] タブに移動し、ログイン名として「NT AUTHORITY\SYSTEM」と入力します。Go to the General tab and enter NT AUTHORITY\SYSTEM as the Login Name.

    SSMS のログイン名

  5. [サーバー ロール] に移動し、 [public] および [sysadmin] ロールを選択します。Go to Server Roles and choose public and sysadmin roles.

    SSMS でのロールの選択

  6. [状態] に移動します。Go to Status. データベース エンジンに接続するためのアクセス許可を付与し、ログインを有効にします。Grant the Permission to connect to database engine and Login as Enabled.

    SSMS でのアクセス許可の付与

  7. [OK] をクリックします。Click OK.

  8. 同じ一連の手順 (上記の 1 から 7) を繰り返して、SQL Server インスタンスに NT Service\AzureWLBackupPluginSvc ログインを追加します。Repeat the same sequence of steps (1-7 above) to add NT Service\AzureWLBackupPluginSvc login to the SQL Server instance. ログインが既に存在する場合は、そのログインに sysadmin サーバー ロールがあることを確認します。また [状態] で、そのログインにデータベース エンジンに接続するためのアクセス許可が付与されていること、およびそのログインが有効になっていることを確認します。If the login already exists, make sure it has the sysadmin server role and under Status it has Grant the Permission to connect to database engine and Login as Enabled.

  9. アクセス許可を付与した後、ポータルで DB を再検出します ([コンテナー] -> [バックアップ インフラストラクチャ] -> [Workload in Azure VM](Azure VM のワークロード))。After granting permission, Re-discover DBs in the portal: Vault -> Backup Infrastructure -> Workload in Azure VM:

    Azure portal での DB の再検出

または、管理者モードで次の PowerShell コマンドを実行して、アクセス許可の付与を自動化できます。Alternatively, you can automate giving the permissions by running the following PowerShell commands in admin mode. インスタンス名は、既定では MSSQLSERVER に設定されます。The instance name is set to MSSQLSERVER by default. 必要に応じて、スクリプトでインスタンス名引数を変更します。Change the instance name argument in script if need be:

param(
    [Parameter(Mandatory=$false)]
    [string] $InstanceName = "MSSQLSERVER"
)
if ($InstanceName -eq "MSSQLSERVER")
{
    $fullInstance = $env:COMPUTERNAME   # In case it is the default SQL Server Instance
}
else
{
    $fullInstance = $env:COMPUTERNAME + "\" + $InstanceName   # In case of named instance
}
try
{
    sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT Service\AzureWLBackupPluginSvc', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
    Write-Host "An error occurred:"
    Write-Host $_.Exception|format-list -force
}
try
{
    sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT AUTHORITY\SYSTEM', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
    Write-Host "An error occurred:"
    Write-Host $_.Exception|format-list -force
}

次の手順Next steps