Azure SQL Edge でのデータベースのバックアップと復元Back up and restore databases in Azure SQL Edge

Azure SQL Edge は、最新バージョンの Microsoft SQL データベース エンジンの上に構築されています。Azure SQL Edge is built on the latest versions of the Microsoft SQL Database Engine. コンテナーで実行される SQL Server on Linux と SQL Server で使用できるデータベースのバックアップおよび復元機能と同様の機能が提供されます。It provides similar backup and restore database capabilities as those available in SQL Server on Linux and SQL Server running in containers. バックアップおよび復元コンポーネントにより、Azure SQL Edge データベースに格納されるデータを保護するために不可欠な保護機能が提供されます。The backup and restore component provides an essential safeguard for protecting data stored in your Azure SQL Edge databases.

致命的なデータ損失のリスクを最小限に抑えるために、データベースを定期的にバックアップして、データの変更を定期的に保持する必要があります。To minimize the risk of catastrophic data loss, you should back up your databases periodically to preserve modifications to your data on a regular basis. 十分に計画されたバックアップおよび復元戦略は、さまざまな障害が原因で発生するデータ損失からデータベースを保護します。A well-planned backup and restore strategy helps protect databases against data loss caused by a variety of failures. 一連のバックアップの復元とデータベースの回復を実行することでご自分の戦略をテストして、災害に効率的に対応するための準備を整えてください。Test your strategy by restoring a set of backups and then recovering your database, to prepare you to respond effectively to a disaster.

バックアップが重要である理由の詳細については、「SQL Server データベースのバックアップと復元」をご覧ください。To read more about why backups are important, see Backup and restore of SQL Server databases.

Azure SQL Edge では、ローカル ストレージと Azure BLOB の両方を、バックアップと復元の対象として使用できます。Azure SQL Edge enables you to back up to and restore from both local storage and Azure blobs. 詳細については、「Azure Blob Storage を使用した SQL Server のバックアップと復元」と「SQL Server の URL へのバックアップ」をご覧ください。For more information, see SQL Server backup and restore with Azure Blob storage and SQL Server backup to URL.

Azure SQL Edge でデータベースをバックアップするBack up a database in Azure SQL Edge

Azure SQL Edge では、SQL Server でサポートされているのと同じバックアップの種類がサポートされています。Azure SQL Edge supports the same backup types as SQL Server. 完全な一覧については、「バックアップの概要」を参照してください。For a complete list, see Backup overview.

重要

Azure SQL Edge で作成されたデータベースでは、既定で単純復旧モデルが使用されます。Databases created in Azure SQL Edge use the simple recovery model by default. そのため、これらのデータベースでログ バックアップを実行することはできません。As such, you can't perform log backups on these databases. これを行う必要がある場合は、データベース復旧モデルを完全復旧モデルに変更する管理者が必要です。If you need to do this, you'll need an administrator to change the database recovery model to the full recovery model. SQL Server でサポートされている復旧モデルの完全な一覧については、「復旧モデルの概要」を参照してください。For a complete list of recovery models supported by SQL Server, see Recovery model overview.

ローカル ディスクにバックアップするBack up to local disk

次の例では、BACKUP DATABASE Transact-SQL コマンドを使用して、コンテナー内にデータベースのバックアップを作成します。In the following example, you use the BACKUP DATABASE Transact-SQL command to create a database backup in the container. この例のために、バックアップ ファイルを格納するための backup という名前の新しいフォルダーを作成します。For the purpose of this example, you create a new folder called backup to store the backup files.

  1. バックアップ用のフォルダーを作成します。Create a folder for the backups. Azure SQL Edge コンテナーが実行されているホスト上でこのコマンドを実行します。Run this command on the host where your Azure SQL Edge container is running. 次のコマンドの <AzureSQLEdge_Container_Name> を、ご自分のデプロイ内の Azure SQL Edge コンテナーの名前に置き換えてください。In the following command, replace <AzureSQLEdge_Container_Name> with the name of the Azure SQL Edge container in your deployment.

    sudo docker exec -it <AzureSQLEdge_Container_Name> mkdir /var/opt/mssql/backup
    
  2. SQL Server Management Studio (SSMS) または Azure Data Studio を使用して、Azure SQL Edge インスタンスに接続します。Connect to the Azure SQL Edge instance by using SQL Server Management Studio (SSMS), or by using Azure Data Studio. BACKUP DATABASE コマンドを実行して、ユーザー データベースのバックアップを作成します。Run the BACKUP DATABASE command to take the backup of your user database. 次の例では、 IronOreSilicaPrediction データベースのバックアップを作成します。In the following example, you're taking the backup of the IronOreSilicaPrediction database.

    BACKUP DATABASE [IronOreSilicaPrediction] 
    TO DISK = N'/var/opt/mssql/backup/IronOrePredictDB.bak' 
    WITH NOFORMAT, NOINIT,  NAME = N'IronOreSilicaPrediction-Full Database Backup', 
    SKIP, NOREWIND, NOUNLOAD, COMPRESSION,  STATS = 10
    GO
    
  3. このコマンドを実行し、データベースのバックアップに成功した場合は、SSMS または Azure Data Studio の結果セクションに次のようなメッセージが表示されます。After you run the command, if the backup of the database is successful, you'll see messages similar to the following in the results section of SSMS or Azure Data Studio.

    10 percent processed.
    20 percent processed.
    30 percent processed.
    40 percent processed.
    50 percent processed.
    60 percent processed.
    70 percent processed.
    80 percent processed.
    90 percent processed.
    100 percent processed.
    Processed 51648 pages for database 'IronOreSilicaPrediction', file 'IronOreSilicaPrediction' on file 1.
    Processed 2 pages for database 'IronOreSilicaPrediction', file 'IronOreSilicaPrediction_log' on file 1.
    BACKUP DATABASE successfully processed 51650 pages in 3.588 seconds (112.461 MB/sec).
    
    Completion time: 2020-04-09T23:54:48.4957691-07:00
    

URL にバックアップするBack up to URL

Azure SQL Edge では、ページ BLOB とブロック BLOB の両方へのバックアップがサポートされています。Azure SQL Edge supports backups to both page blobs and block blobs. 詳細については、「ブロック BLOB とページ BLOB へのバックアップ」を参照してください。For more information, see Back up to block blob vs page blob. 次の例では、データベース IronOreSilicaPrediction がブロック BLOB にバックアップされます。In the following example, the database IronOreSilicaPrediction is being backed up to a block blob.

  1. ブロック BLOB へのバックアップを構成するには、まず Azure SQL Edge 上に SQL Server 資格情報を作成するために使用できる Shared Access Signature (SAS) トークンを生成します。To configure backups to block blobs, first generate a shared access signature (SAS) token that you can use to create a SQL Server credential on Azure SQL Edge. このスクリプトでは、保存されているアクセス ポリシーに関連付けられた SAS が作成されます。The script creates a SAS that is associated with a stored access policy. 詳細については、共有アクセス署名のパート 1 のSAS モデルの説明に関するページをご覧ください。For more information, see Shared access signatures, part 1: Understanding the SAS model. スクリプトはまた、SQL Server に対する資格情報を作成するのに必要な T-SQL コマンドも書き込みます。The script also writes the T-SQL command required to create the credential on SQL Server. 次のスクリプトは、ストレージ アカウントを持つ Azure サブスクリプションとバックアップ用のストレージ コンテナーを既にお持ちであることを前提としています。The following script assumes that you already have an Azure subscription with a storage account, and a storage container for the backups.

    # Define global variables for the script  
    $subscriptionName='<your subscription name>'   # the name of subscription name you will use
    $resourcegroupName = '<your resource group name>' # the name of resource group you will use
    $storageAccountName= '<your storage account name>' # the storage account name you will use for backups
    $containerName= '<your storage container name>'  # the storage container name to which you will attach the SAS policy with its SAS token  
    $policyName = 'SASPolicy' # the name of the SAS policy  
    
    # adds an authenticated Azure account for use in the session
    Login-AzAccount
    
    # set the tenant, subscription and environment for use in the rest of
    Select-AzSubscription -Subscription $subscriptionName
    
    # Generate the SAS token
    $sa = Get-AzStorageAccount -ResourceGroupName $resourcegroupName -Name $storageAccountName 
    $storagekey = Get-AzStorageAccountKey -ResourceGroupName $resourcegroupName -Name $storageAccountName 
    $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storagekey[0].Value
    $cbc = Get-AzStorageContainer -Name $containerName -Context $storageContext
    $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.Substring(1))''
    
    # 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.CloudBlobContainer.Uri.AbsoluteUri,$sas.Substring(1)
    $tSql | clip  
    Write-Host $tSql
    

    スクリプトが正常に実行されたら、CREATE CREDENTIAL コマンドをクエリ ツールにコピーします。After successfully running the script, copy the CREATE CREDENTIAL command to a query tool. 次に、SQL Server のインスタンスに接続し、コマンドを実行して SAS を使用する資格情報を作成します。Then connect to an instance of SQL Server, and run the command to create the credential with the SAS.

  2. SSMS または Azure Data Studio を使用して Azure SQL Edge インスタンスに接続し、前の手順のコマンドを使用して資格情報を作成します。Connect to the Azure SQL Edge instance by using SSMS or Azure Data Studio, and create the credential by using the command from the previous step. CREATE CREDENTIAL コマンドを、前の手順の実際の出力に置き換えてください。Make sure to replace the CREATE CREDENTIAL command with the actual output from the previous step.

    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>';
    
  3. 次のコマンドを実行すると、 IronOreSilicaPrediction のバックアップが Azure ストレージ コンテナーに作成されます。The following command takes a backup of the IronOreSilicaPrediction to the Azure storage container.

    BACKUP DATABASE IronOreSilicaPrediction
    TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/IronOreSilicaPrediction.bak'
    With MAXTRANSFERSIZE = 4194304,BLOCKSIZE=65536;  
    GO
    

Azure SQL Edge でデータベースを復元するRestore a database in Azure SQL Edge

Azure SQL Edge では、ローカル ディスク、ネットワークの場所、または Azure BLOB ストレージ アカウントから復元できます。In Azure SQL Edge, you can restore from a local disk, a network location, or an Azure Blob storage account. SQL Server での復元と回復の詳細については、「復元と復旧の概要」を参照してください。For more information about restore and recovery in SQL Server, see Restore and recovery overview. SQL Server での単純復旧モデルの概要については、「データベースの全体復元 (単純復旧モデル)」を参照してください。For an overview of the simple recovery model in SQL Server, see Complete database restores (simple recovery model).

重要

Azure SQL Edge で作成されたデータベースは、Microsoft SQL Server または Azure SQL のインスタンス上で復元できません。Databases created in Azure SQL Edge cannot be restored on an instance of Microsoft SQL Server or Azure SQL. また、Microsoft SQL Server または Azure SQL で作成されたデータベースは、Azure SQL Edge 上で復元できますが、Azure SQL Edge でサポートされていない機能がデータベースに含まれていないことが条件です。Additionally, a database created on Microsoft SQL Server or Azure SQL can be restored on Azure SQL Edge, provided the database does not contain any of the features not supported by Azure SQL Edge.

ローカル ディスクから復元するRestore from a local disk

この例では、前の例で作成した IronOreSilicaPrediction バックアップを使用します。This example uses the IronOreSilicaPrediction backup that you made in the previous example. 次に、別の名前の新しいデータベースとして復元します。Now, you'll restore it as a new database with a different name.

  1. データベースのバックアップ ファイルがコンテナー内にまだ存在していない場合は、次のコマンドを使用してコンテナー内にファイルをコピーできます。If the database backup file isn't already present in the container, you can use the following command to copy the file into the container. 次の例は、バックアップ ファイルがローカル ホスト上に存在し、 sql1 という名前の Azure SQL Edge コンテナー内の /var/opt/mssql/backup フォルダーにコピーされることを前提としています。The following example assumes that the backup file is present on the local host, and is being copied to the /var/opt/mssql/backup folder into an Azure SQL Edge container named sql1.

    sudo docker cp IronOrePredictDB.bak sql1:/var/opt/mssql/backup
    
  2. SSMS または Azure Data Studio を使用して Azure SQL Edge インスタンスに接続し、復元コマンドを実行します。Connect to the Azure SQL Edge instance by using SSMS or Azure Data Studio to run the restore command. 次の例では、 IronOrePredictDB.bak が復元され、新しいデータベース IronOreSilicaPrediction_2 が作成されます。In the following example, IronOrePredictDB.bak is restored to create a new database, IronOreSilicaPrediction_2.

    Restore FilelistOnly from disk = N'/var/opt/mssql/backup/IronOrePredictDB.bak'
    
    Restore Database IronOreSilicaPrediction_2
    From disk = N'/var/opt/mssql/backup/IronOrePredictDB.bak'
    WITH MOVE 'IronOreSilicaPrediction' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_2.mdf',
    MOVE 'IronOreSilicaPrediction_log' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_2.ldf'
    
  3. 復元コマンドを実行し、復元操作が正常に完了すると、出力ウィンドウに次のようなメッセージが表示されます。After you run the restore command, if the restore operation was successful, you'll see messages similar to the following in the output window.

    Processed 51648 pages for database 'IronOreSilicaPrediction_2', file 'IronOreSilicaPrediction' on file 1.
    Processed 2 pages for database 'IronOreSilicaPrediction_2', file 'IronOreSilicaPrediction_log' on file 1.
    RESTORE DATABASE successfully processed 51650 pages in 6.543 seconds (61.670 MB/sec).
    
    Completion time: 2020-04-13T23:49:21.1600986-07:00
    

URL から復元Restore from URL

Azure SQL Edge では、Azure Storage アカウントからのデータベースの復元もサポートされています。Azure SQL Edge also supports restoring a database from an Azure Storage account. 復元は、ブロック BLOB またはページ BLOB のいずれかのバックアップから実行できます。You can restore from either the block blobs or page blob backups. 次の例では、ブロック BLOB のデータベース バックアップ ファイル IronOreSilicaPrediction_2020_04_16.bak が復元され、データベース IronOreSilicaPrediction_3 が作成されます。In the following example, the IronOreSilicaPrediction_2020_04_16.bak database backup file on a block blob is restored to create the database, IronOreSilicaPrediction_3.

RESTORE DATABASE IronOreSilicaPrediction_3
FROM URL = 'https://mystorageaccount.blob.core.windows.net/mysecondcontainer/IronOreSilicaPrediction_2020_04_16.bak'
WITH MOVE 'IronOreSilicaPrediction' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_3.mdf', 
MOVE 'IronOreSilicaPrediction_log' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_3.ldf',
STATS = 10;