適用対象: SQL Server 2016 (13.x) 以降のバージョン
このチュートリアルでは、SQL Server 2016 (13.x) 以降のバージョンのデータ ファイルとバックアップに Azure Blob Storage を使用する方法について説明します。
SQL Server での Azure Blob Storage のサポートは、SQL Server 2012 (11.x) Service Pack 1 CU2 で導入され、以降のバージョンで強化されました。 この機能を使用する機能と利点の概要については、 Microsoft Azure の SQL Server データ ファイルに関するページを参照してください。
このチュートリアルでは、複数のセクションで Azure Blob Storage の SQL Server データ ファイルを操作する方法について説明します。 各セクションは特定のタスクに重点を置いているので、セクションを順番に完了する必要があります。 まず、格納されているアクセス ポリシーと共有アクセス署名を使用して、Blob Storage に新しいコンテナーを作成する方法について説明します。 次に、SQL Server と Azure Blob Storage を統合するための SQL Server 資格情報を作成する方法について説明します。 次に、Blob Storage にデータベースをバックアップし、Azure 仮想マシンに復元します。 その後、SQL Server ファイル スナップショット トランザクション ログ バックアップを使用して、特定の時点と新しいデータベースに復元します。 最後に、このチュートリアルでは、ファイル スナップショット バックアップの理解と操作に役立つメタデータ システム ストアド プロシージャと関数の使用方法について説明します。
[前提条件]
このチュートリアルを完了するには、SQL Server のバックアップと復元の概念と T-SQL 構文について理解している必要があります。
このチュートリアルを使用するには、Azure ストレージ アカウント、SQL Server Management Studio (SSMS)、オンプレミスの SQL Server インスタンスへのアクセス、SQL Server 2016 (13.x) 以降のバージョンのインスタンスを実行している Azure 仮想マシン (VM) へのアクセス、および AdventureWorks2025 データベースが必要です。 さらに、BACKUPコマンドと RESTORE コマンドの発行に使用するアカウントは、資格情報のアクセス許可を変更してdb_backupoperator データベース ロールに含まれている必要があります。
- 無料の Azure アカウントを取得します。
- Azure ストレージ アカウントを作成します。
- SQL Server 2017 Developer Edition インストールします。
- SQL Server を実行している Azure VM をプロビジョニングします。
- SQL Server Management Studio インストールします。
- AdventureWorks サンプル データベースをダウンロードします。
- ユーザー アカウントを db_backupoperator のロールに割り当て、資格情報のアクセス許可 を変更します 。
Von Bedeutung
SQL Server では、 Azure Data Lake Storage はサポートされていません。 このチュートリアルで使用するストレージ アカウントで 階層型名前空間 が有効になっていないことを確認します。
1 - 保存されているアクセス ポリシーと共有アクセス ストレージを作成する
このセクションでは、 Azure PowerShell スクリプトを使用して、格納されているアクセス ポリシーを使用して Azure Blob Storage コンテナーに共有アクセス署名を作成します。
注
このスクリプトは、Azure PowerShell 5.0.10586 を使用して記述されています。
Shared Access Signature は、コンテナー、BLOB、キュー、またはテーブルに制限付きアクセス権を付与する URI です。 保存されているアクセス ポリシーでは、取り消し、期限切れ、アクセスの拡張など、サーバー側の共有アクセス署名を追加レベルで制御できます。 この新しい拡張機能を使用する場合は、少なくとも読み取り、書き込み、および一覧表示の権限を持つコンテナーにポリシーを作成する必要があります。
格納されているアクセス ポリシーと Shared Access Signature は、Azure PowerShell、Azure Storage SDK、Azure REST API、またはサード パーティ製ユーティリティを使用して作成できます。 このチュートリアルでは、Azure PowerShell スクリプトを使用してこのタスクを完了する方法について説明します。 このスクリプトでは、Resource Manager デプロイ モデルを使用し、次の新しいリソースを作成します。
- リソースグループ
- ストレージ アカウント
- Azure BLOB Storage コンテナー
- SAS ポリシー
このスクリプトは、前のリソースの名前と、次の必要な入力値の名前を指定するために、いくつかの変数を宣言することから始めます。
- 他のリソース オブジェクトの名前付けに使用されるプレフィックス名
- サブスクリプション名
- データ センターの場所
スクリプトは、「CREATE CREDENTIALする」で使用する適切な ステートメントを生成することによって完了します。 このステートメントはクリップボードにコピーされ、コンソールに出力されて表示されます。
コンテナーにポリシーを作成し、Shared Access Signature (SAS) を生成するには、次の手順に従います。
Windows PowerShell または Windows PowerShell ISE を開きます (以前のバージョンの要件を参照)。
次のスクリプトを編集して実行します。
# Define global variables for the script $prefixName = '<a prefix name>' # used as the prefix for the name for various objects $subscriptionID = '<your subscription ID>' # the ID of subscription name you will use $locationName = '<a data center ___location>' # the data center region you will use $storageAccountName = $prefixName + 'storage' # the storage account name you will create or use $containerName = $prefixName + 'container' # the storage container name to which you will attach the SAS policy with its SAS token $policyName = $prefixName + 'policy' # the name of the SAS policy # Set a variable for the name of the resource group you will create or use $resourceGroupName = $prefixName + 'rg' # Add an authenticated Azure account for use in the session Connect-AzAccount # Set the tenant, subscription and environment for use in the rest of Set-AzContext -SubscriptionId $subscriptionID # Create a new resource group - comment out this line to use an existing resource group New-AzResourceGroup -Name $resourceGroupName -Location $locationName # Create a new Azure Resource Manager storage account - comment out this line to use an existing Azure Resource Manager storage account New-AzStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroupName -Type Standard_RAGRS -Location $locationName # Get the access keys for the Azure Resource Manager storage account $accountKeys = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName # Create a new storage account context using an Azure Resource Manager storage account $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $accountKeys[0].Value # Creates a new container in Blob Storage $container = New-AzStorageContainer -Context $storageContext -Name $containerName # Sets up a Stored Access Policy and a Shared Access Signature for the new container $policy = New-AzStorageContainerStoredAccessPolicy -Container $containerName -Policy $policyName -Context $storageContext -StartTime $(Get-Date).ToUniversalTime().AddMinutes(-5) -ExpiryTime $(Get-Date).ToUniversalTime().AddYears(10) -Permission rwld # Gets the Shared Access Signature for the policy $sas = New-AzStorageContainerSASToken -name $containerName -Policy $policyName -Context $storageContext Write-Host 'Shared Access Signature= '$($sas.Substring(1))'' # Sets the variables for the new container you just created $container = Get-AzStorageContainer -Context $storageContext -Name $containerName $cbc = $container.CloudBlobContainer # 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.Uri, $sas Set-Clipboard -Value $tSql Write-Host $tSql # Once you're done with the tutorial, remove the resource group to clean up the resources. # Remove-AzResourceGroup -Name $resourceGroupNameスクリプトが完了すると、次のセクションで使用するために、
CREATE CREDENTIALステートメントがクリップボードに表示されます。
2 - 共有アクセス署名を使用して SQL Server 資格情報を作成する
このセクションでは、セキュリティ情報を格納する資格情報を作成します。これは、前の手順で作成した Azure Blob Storage コンテナーへの書き込みと読み取りに SQL Server によって使用されます。
SQL Server 資格情報は、SQL Server の外部のリソースに接続するために必要な認証情報を格納するために使用されるオブジェクトです。 資格情報には、Azure Blob Storage コンテナーの URI パスと、このコンテナーの Shared Access Signature が格納されます。
SQL Server 資格情報を作成するには、次の手順に従います。
SSMS を起動します。
新しいクエリ ウィンドウを開き、オンプレミス環境のデータベース エンジンの SQL Server インスタンスに接続します。
新しいクエリ ウィンドウで、セクション 1 の shared access signature を使用して
CREATE CREDENTIALステートメントを貼り付け、そのスクリプトを実行します。スクリプトは次のコードのようになります。
/* Example: USE master CREATE CREDENTIAL [https://msfttutorial.blob.core.windows.net/containername] WITH IDENTITY='SHARED ACCESS SIGNATURE' , SECRET = 'sharedaccesssignature' GO */ USE master; CREATE CREDENTIAL [https://<storage-account>.blob.core.windows.net/<container-name>] -- this name must match the container path, start with https and must not contain a forward slash at the end WITH IDENTITY = 'SHARED ACCESS SIGNATURE', -- this is a mandatory string and should not be changed SECRET = 'sharedaccesssignature'; -- this is the shared access signature key that you obtained in section 1. GO使用可能なすべての資格情報を表示するには、インスタンスに接続されているクエリ ウィンドウで次のステートメントを実行します。
SELECT * FROM sys.credentials;新しいクエリ ウィンドウを開き、Azure 仮想マシン内のデータベース エンジンの SQL Server インスタンスに接続します。
新しいクエリ ウィンドウで、セクション 1 の shared access signature を使用して
CREATE CREDENTIALステートメントを貼り付け、そのスクリプトを実行します。コンテナーにアクセスする追加の SQL Server インスタンスについて、手順 5 と 6 を繰り返します。
3 - データベースの URL へのバックアップ
このセクションでは、SQL Server インスタンスの AdventureWorks2025 データベースを 、セクション 1 で作成したコンテナーにバックアップします。
データベースを BLOB ストレージにバックアップするには、次の手順に従います。
SSMS を起動します。
新しいクエリ ウィンドウを開き、Azure 仮想マシン内の SQL Server インスタンスに接続します。
次の Transact-SQL スクリプトをコピーしてクエリ ウィンドウに貼り付けます。 ストレージ アカウント名とセクション 1 で指定したコンテナーに適した URL を変更し、このスクリプトを実行します。
-- To permit log backups, before the full database backup, modify the database to use the full recovery model. USE master; ALTER DATABASE AdventureWorks2022 SET RECOVERY FULL; -- Back up the full AdventureWorks2022 database to the container that you created in section 1 BACKUP DATABASE AdventureWorks2022 TO URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_onprem.bak';オブジェクト エクスプローラーを開き、ストレージ アカウントとアカウント キーを使用して Azure Storage に接続します。
- [ コンテナー] を展開し、セクション 1 で作成したコンテナーを展開し、手順 3. のバックアップがこのコンテナーに表示されることを確認します。
4 - URL から仮想マシンにデータベースを復元する
このセクションでは、 AdventureWorks2025 データベースを Azure 仮想マシンの SQL Server インスタンスに復元します。
注
このチュートリアルではわかりやすくするために、データベース バックアップに使用したデータ ファイルとログ ファイルに同じコンテナーを使用します。 運用環境では、多くの場合、複数のコンテナーと、頻繁に複数のデータ ファイルを使用します。 また、大規模なデータベースをバックアップするときにバックアップのパフォーマンスを向上させるために、複数の BLOB 間でバックアップをストライピングすることを検討することもできます。
AdventureWorks2025 データベースを Azure Blob Storage から Azure 仮想マシン内の SQL Server インスタンスに復元するには、次の手順に従います。
SSMS を起動します。
新しいクエリ ウィンドウを開き、Azure 仮想マシン内のデータベース エンジンの SQL Server インスタンスに接続します。
次の Transact-SQL スクリプトをコピーしてクエリ ウィンドウに貼り付けます。 ストレージ アカウント名とセクション 1 で指定したコンテナーに適した URL を変更し、このスクリプトを実行します。
-- Restore AdventureWorks2022 from URL to SQL Server instance using Azure Blob Storage for database files RESTORE DATABASE AdventureWorks2022 FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_onprem.bak' WITH MOVE 'AdventureWorks2022_data' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_Data.mdf', MOVE 'AdventureWorks2022_log' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_Log.ldf'; --, REPLACEオブジェクト エクスプローラーを開き、Azure SQL Server インスタンスに接続します。
オブジェクト エクスプローラーで、[ データベース ] ノードを展開し、
AdventureWorks2025データベースが復元されていることを確認します (必要に応じてノードを更新します)。AdventureWorks2022 を右クリックし、[プロパティ] を選択します。
[ ファイル] を選択し、2 つのデータベース ファイルのパスが Azure Blob Storage コンテナー内の BLOB を指す URL であることを確認します (完了したら [キャンセル] を選択します)。
オブジェクト エクスプローラーで、Azure Storage に接続します。
- [ コンテナー] を展開し、セクション 1 で作成したコンテナーを展開し、前の手順 3. の
AdventureWorks2022_Data.mdfとAdventureWorks2022_Log.ldfがセクション 3 のバックアップ ファイルと共に表示されることを確認します (必要に応じてノードを更新します)。
- [ コンテナー] を展開し、セクション 1 で作成したコンテナーを展開し、前の手順 3. の
5 - ファイル スナップショット バックアップを使用してデータベースをバックアップする
このセクションでは、ファイル スナップショット バックアップを使用して Azure 仮想マシンの AdventureWorks2025 データベースをバックアップし、Azure スナップショットを使用してほぼ瞬時にバックアップを実行します。 ファイル スナップショット バックアップの詳細については、「Azure でのデータベース ファイルのバックアップのFile-Snapshot」を参照してください。
ファイル スナップショット バックアップを使用して AdventureWorks2025 データベースをバックアップするには、次の手順に従います。
SSMS を起動します。
新しいクエリ ウィンドウを開き、Azure 仮想マシン内のデータベース エンジンの SQL Server インスタンスに接続します。
次の Transact-SQL スクリプトをコピーしてクエリ ウィンドウに貼り付けて実行します (このクエリ ウィンドウを閉じないでください。手順 5 でこのスクリプトを再度実行します)。 このシステム ストアド プロシージャを使用すると、指定したデータベースを構成する各ファイルの既存のファイル スナップショット バックアップを表示できます。 このデータベースのファイル スナップショット バックアップがないことがわかります。
-- Verify that no file snapshot backups exist SELECT * FROM sys.fn_db_backup_file_snapshots('AdventureWorks2022');次の Transact-SQL スクリプトをコピーしてクエリ ウィンドウに貼り付けます。 ストレージ アカウント名とセクション 1 で指定したコンテナーに適した URL を変更し、このスクリプトを実行します。 このバックアップの実行速度に注目してください。
-- Backup the AdventureWorks2022 database with FILE_SNAPSHOT BACKUP DATABASE AdventureWorks2022 TO URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_Azure.bak' WITH FILE_SNAPSHOT;手順 4 のスクリプトが正常に実行されたことを確認したら、次のスクリプトをもう一度実行します。 手順 4 のファイル スナップショット バックアップ操作では、データ ファイルとログ ファイルの両方のファイル スナップショットが生成されました。
-- Verify that two file-snapshot backups exist SELECT * FROM sys.fn_db_backup_file_snapshots('AdventureWorks2022');オブジェクト エクスプローラーの Azure 仮想マシンの SQL Server インスタンスで、[ データベース] ノードを展開し、
AdventureWorks2025データベースがこのインスタンスに復元されていることを確認します (必要に応じてノードを更新します)。オブジェクト エクスプローラーで、Azure Storage に接続します。
[ コンテナー] を展開し、セクション 1 で作成したコンテナーを展開し、前の手順 4 の
AdventureWorks2022_Azure.bakがセクション 3 のバックアップ ファイルとセクション 4 のデータベース ファイルと共に表示されることを確認します (必要に応じてノードを更新します)。
6 - ファイル スナップショット バックアップを使用してアクティビティとバックアップ ログを生成する
このセクションでは、 AdventureWorks2025 データベースでアクティビティを生成し、ファイル スナップショット バックアップを使用してトランザクション ログ バックアップを定期的に作成します。 ファイル スナップショット バックアップの使用の詳細については、「 Azure でのデータベース ファイルのバックアップのFile-Snapshot」を参照してください。
AdventureWorks2025 データベースでアクティビティを生成し、ファイル スナップショット バックアップを使用してトランザクション ログ バックアップを定期的に作成するには、次の手順に従います。
SSMS を起動します。
2 つの新しいクエリ ウィンドウを開き、それぞれ Azure 仮想マシン内のデータベース エンジンの SQL Server インスタンスに接続します。
次の Transact-SQL スクリプトをコピーして貼り付け、クエリ ウィンドウのいずれかに実行します。
Production.Locationテーブルには、手順 4 で新しい行を追加する前に 14 行あります。-- Verify row count at start SELECT COUNT(*) FROM AdventureWorks2022.Production.Location;次の 2 つの Transact-SQL スクリプトをコピーして、2 つの個別のクエリ ウィンドウに貼り付けます。 ストレージ アカウント名とセクション 1 で指定したコンテナーに合わせて URL を適切に変更し、これらのスクリプトを別々のクエリ ウィンドウで同時に実行します。 これらのスクリプトの完了には数分かかります。
-- Insert 30,000 new rows into the Production.Location table in the AdventureWorks2022 database in batches of 75 DECLARE @count AS INT = 1, @inner AS INT; WHILE @count < 400 BEGIN BEGIN TRANSACTION; SET @inner = 1; WHILE @inner <= 75 BEGIN INSERT INTO AdventureWorks2022.Production.Location ( Name, CostRate, Availability, ModifiedDate ) VALUES (NEWID(), .5, 5.2, GETDATE()); SET @inner = @inner + 1; END COMMIT TRANSACTION; WAITFOR DELAY '00:00:01'; SET @count = @count + 1; END SELECT COUNT(*) FROM AdventureWorks2022.Production.Location;--take 7 transaction log backups with FILE_SNAPSHOT, one per minute, and include the row count and the execution time in the backup file name DECLARE @count INT=1, @device NVARCHAR(120), @numrows INT; WHILE @count <= 7 BEGIN SET @numrows = (SELECT COUNT (*) FROM AdventureWorks2022.Production.Location); SET @device = 'https://<storage-account>.blob.core.windows.net/<container-name>/tutorial-' + CONVERT (varchar(10),@numrows) + '-' + FORMAT(GETDATE(), 'yyyyMMddHHmmss') + '.bak'; BACKUP LOG AdventureWorks2022 TO URL = @device WITH FILE_SNAPSHOT; SELECT * from sys.fn_db_backup_file_snapshots ('AdventureWorks2022'); WAITFOR DELAY '00:1:00'; SET @count = @count + 1; END;最初のスクリプトの出力を確認し、最終的な行数が 29,939 になっていることを確認します。
2 つ目のスクリプトの出力を確認し、
BACKUP LOGステートメントが実行されるたびに、2 つの新しいファイル スナップショットが作成され、ログ ファイルのファイル スナップショットが 1 つ、データ ファイルのファイル スナップショットが 1 つ 、データベース ファイルごとに合計 2 つのファイル スナップショットが作成されていることに注意してください。 2 番目のスクリプトが完了すると、合計 16 個のファイル スナップショットがあり、各データベース ファイルに 8 個 (BACKUP DATABASEステートメントから 1 つ、BACKUP LOGステートメントを実行するたびに 1 つ) あることに注意してください。オブジェクト エクスプローラーで、Azure Storage に接続します。
[ コンテナー] を展開し、セクション 1 で作成したコンテナーを展開し、前のセクションのデータ ファイルと共に 7 つの新しいバックアップ ファイルが表示されることを確認します (必要に応じてノードを更新します)。
7 - データベースを特定の時点に復元する
このセクションでは、 AdventureWorks2025 データベースを 2 つのトランザクション ログ バックアップの間の特定の時点に復元します。
従来のバックアップでは、特定の時点への復元を実現するには、データベースの完全バックアップ (差分バックアップなど) と、復元する時点までのすべてのトランザクション ログ ファイルを使用する必要があります。 ファイル スナップショット バックアップでは、復元する時間をフレーミングする目標の投稿を提供する 2 つの隣接するログ バックアップ ファイルのみが必要です。 各ログ バックアップでは、各データベース ファイル (各データ ファイルとログ ファイル) のファイル スナップショットが作成されるため、必要なログ ファイル スナップショット バックアップ セットは 2 つだけです。
ファイル スナップショット バックアップ セットから指定した時点にデータベースを復元するには、次の手順に従います。
SSMS を起動します。
新しいクエリ ウィンドウを開き、Azure 仮想マシン内のデータベース エンジンの SQL Server インスタンスに接続します。
次の Transact-SQL スクリプトをコピーして貼り付け、クエリ ウィンドウに実行します。 手順 4 で行数が少ない時点に復元する前に、
Production.Locationテーブルに 29,939 行があることを確認します。-- Verify row count at start SELECT COUNT(*) FROM AdventureWorks2022.Production.Location;
次の Transact-SQL スクリプトをコピーしてクエリ ウィンドウに貼り付けます。 隣接する 2 つのログ バックアップ ファイルを選択し、このスクリプトに必要な日付と時刻にファイル名を変換します。 ストレージ アカウント名とセクション 1 で指定したコンテナーに適した URL を変更します。 1 番目と 2 番目のバックアップ ファイル名を指定し、
STOPATの形式でJune 26, 2018 01:48 PM時刻を指定してから、このスクリプトを実行します。 完了まで数分かかる場合があります。-- restore and recover to a point in time between the times of two transaction log backups, and then verify the row count ALTER DATABASE AdventureWorks2022 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; RESTORE DATABASE AdventureWorks2022 FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/<firstbackupfile>.bak' WITH NORECOVERY, REPLACE; RESTORE LOG AdventureWorks2022 FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/<secondbackupfile>.bak' WITH RECOVERY, STOPAT = 'June 26, 2018 01:48 PM'; ALTER DATABASE AdventureWorks2022 SET MULTI_USER; -- get new count SELECT COUNT(*) FROM AdventureWorks2022.Production.Location;出力結果を確認します。 復元後の行数は 18,389 で、これはログ バックアップ 5 から 6 までの行数です (行数は異なる場合があります)。
8 - ログ バックアップから新しいデータベースとして復元する
このセクションでは、 AdventureWorks2025 データベースをファイル スナップショット トランザクション ログ バックアップから新しいデータベースとして復元します。
このシナリオでは、ビジネス分析とレポートの目的で、別の仮想マシン上の SQL Server インスタンスへの復元を実行します。 別の仮想マシン上の別のインスタンスに復元すると、ワークロードは専用の仮想マシンにオフロードされ、この目的のためにサイズが設定され、トランザクション システムからリソース要件が削除されます。
ファイル スナップショット バックアップを使用したトランザクション ログ バックアップからの復元は、従来のストリーミング バックアップよりも大幅に高速です。 従来のストリーミング バックアップでは、データベースの完全バックアップ (差分バックアップなど) と、トランザクション ログ バックアップの一部または全部 (または新しいデータベースの完全バックアップ) を使用する必要があります。 ただし、ファイル スナップショット ログ バックアップでは、最新のログ バックアップ (またはその他のログ バックアップ、または 2 つのログ バックアップの間の特定の時点への特定の時点への復元用の 2 つの隣接するログ バックアップ) のみが必要です。 明確にするために必要なログ ファイル スナップショット バックアップ セットは 1 つだけです。各ファイル スナップショット ログ バックアップでは、各データベース ファイル (各データ ファイルとログ ファイル) のファイル スナップショットが作成されるためです。
ファイル スナップショット バックアップを使用してトランザクション ログ バックアップから新しいデータベースにデータベースを復元するには、次の手順に従います。
SSMS を起動します。
新しいクエリ ウィンドウを開き、Azure 仮想マシン内のデータベース エンジンの SQL Server インスタンスに接続します。
前のセクションで使用したのとは異なる Azure 仮想マシンである場合は、「 2 - Shared Access Signature を使用して SQL Server 資格情報を作成する」の手順に従っていることを確認してください。 別のコンテナーに復元する場合は、「 1 - 新しいコンテナーの保存されたアクセス ポリシーと共有アクセス ストレージを作成 する」の手順に従います。
次の Transact-SQL スクリプトをコピーしてクエリ ウィンドウに貼り付けます。 使用するログ バックアップ ファイルを選択します。 ストレージ アカウント名とセクション 1 で指定したコンテナーに適した URL を変更し、ログ バックアップ ファイル名を指定して、このスクリプトを実行します。
-- restore as a new database from a transaction log backup file RESTORE DATABASE AdventureWorks2022_EOM FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/<logbackupfile.bak>' WITH MOVE 'AdventureWorks2022_data' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_EOM_Data.mdf', MOVE 'AdventureWorks2022_log' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_EOM_Log.ldf', RECOVERY; --, REPLACE出力を確認して、復元が成功したことを確認します。
オブジェクト エクスプローラーで、Azure Storage に接続します。
[コンテナー] を展開し、セクション 1 で作成したコンテナーを展開し (必要に応じて更新)、新しいデータ ファイルとログ ファイルが前のセクションの BLOB と共にコンテナーに表示されることを確認します。
9 - バックアップ セットとファイル スナップショット バックアップを管理する
このセクションでは、 sp_delete_backup システム ストアド プロシージャを使用してバックアップ セットを削除します。 このシステム ストアド プロシージャは、このバックアップ セットに関連付けられている各データベース ファイルのバックアップ ファイルとファイル スナップショットを削除します。
注
Azure Blob Storage コンテナーからバックアップ ファイルを削除してバックアップ セットを削除しようとすると、バックアップ ファイル自体のみが削除されます。関連付けられているファイル スナップショットは残ります。 このシナリオで問題が発生した場合は、 sys.fn_db_backup_file_snapshots システム関数を使用して孤立したファイル スナップショットの URL を識別し、 sp_delete_backup_file_snapshot システム ストアド プロシージャを使用して孤立した各ファイル スナップショットを削除します。 詳細については、「 Azure でのデータベース ファイルのファイル スナップショット バックアップ」を参照してください。
ファイル スナップショット バックアップ セットを削除するには、次の手順に従います。
SSMS を起動します。
新しいクエリ ウィンドウを開き、Azure 仮想マシン内のデータベース エンジンの SQL Server インスタンスに接続します (または、このコンテナーに対する読み取りと書き込みのアクセス許可を持つ任意の SQL Server インスタンスに接続します)。
次の Transact-SQL スクリプトをコピーしてクエリ ウィンドウに貼り付けます。 削除するログ バックアップと、関連付けられているファイル スナップショットを選択します。 ストレージ アカウント名とセクション 1 で指定したコンテナーに適した URL を変更し、ログ バックアップ ファイル名を指定して、このスクリプトを実行します。
EXECUTE sys.sp_delete_backup 'https://<storage-account>.blob.core.windows.net/<container-name>/tutorial-21764-20181003205236.bak';オブジェクト エクスプローラーで、Azure Storage に接続します。
[ コンテナー] を展開し、セクション 1 で作成したコンテナーを展開し、手順 3 で使用したバックアップ ファイルがこのコンテナーに表示されなくなったことを確認します (必要に応じてノードを更新します)。
次の Transact-SQL スクリプトをコピーしてクエリ ウィンドウに貼り付け、実行して、2 つのファイル スナップショットが削除されたことを確認します。
-- verify that two file snapshots have been removed SELECT * FROM sys.fn_db_backup_file_snapshots('AdventureWorks2022');
10 - リソースを削除する
このチュートリアルが完了したら、リソースを節約するために、このチュートリアルで作成したリソース グループを必ず削除してください。
リソース グループを削除するには、次の PowerShell コードを実行します。
# Define global variables for the script
$prefixName = '<prefix name>' # should be the same as the beginning of the tutorial
# Set a variable for the name of the resource group you will create or use
$resourceGroupName = $prefixName + 'rg'
# Adds an authenticated Azure account for use in the session
Connect-AzAccount
# Set the tenant, subscription and environment for use in the rest of
Set-AzContext -SubscriptionId $subscriptionID
# Remove the resource group
Remove-AzResourceGroup -Name $resourceGroupName
関連コンテンツ
- Microsoft Azure 内の SQL Server データ ファイル
- File-Snapshot Azure でのデータベース ファイルのバックアップ
- Azure Blob Storage の URL への SQL Serve バックアップ
- Shared Access Signature、パート 1: SAS モデルについて
- コンテナーの作成
- コンテナー ACL の設定
- コンテナー ACL の取得
- 資格情報 (データベース エンジン)
- 資格情報を作成する (Transact-SQL)
- sys.credentials (Transact-SQL)
- sp_delete_backup (Transact-SQL)
- sys.fn_db_backup_file_snapshots (Transact-SQL)
- sp_delete_backup_file_snapshot (Transact-SQL) - バックアップファイルスナップショットを削除するためのストアドプロシージャです。