Azure VM SQL Server 2014で、バックアップを保存するためのローカルドライブ(X :)を使用しています。OlaHallengrenのスクリプトを使用しています。AzureFiles共有を追加し、ミラーバックアップを実行しようとしましたが、しかし、私は次のエラーを受け取ります:
BACKUP DATABASE [Test] TO DISK =
N'X:\Backup\SRVSQL01\Test\FULL\SRVSQL01_Test_FULL_20150420_185840.bak'
MIRROR TO DISK =
N'\\storage.file.core.windows.net\backup\SRVSQL01\Test\FULL\SRVSQL01_Test_FULL_20150420_185840.bak'
WITH NO_CHECKSUM, COMPRESSION, FORMAT
Msg 3212, Level 16, State 0, Line 3
The mirror device "X:\Backup\SRVSQL01\Test\FULL\SRVSQL01_Test_FULL_20150420_185840.bak"
and the mirror device "\\storage.file.core.windows.net\backup\SRVSQL01\Test\FULL\SRVSQL01_Test_FULL_20150420_185840.bak"
have different device specifications.
Msg 3013, Level 16, State 1, Line 3
BACKUP DATABASE is terminating abnormally.
Outcome: Failed
最初は、ローカルドライブは64Kアロケーションユニットサイズでフォーマットされていました。 4Kに切り替えて、BlockSize
スイッチを使用しようとしましたが、うまくいきませんでした。何か案は?
URLへのバックアップを使用しているようです。ローカルドライブとファイル共有のように見えます。
ミラーリングされたバックアップについて読むと、いくつかの特別な要件があることがわかります。
「ミラーリングはディスクとテープの両方に適用されます(ディスクは継続テープをサポートしていません。単一のバックアップまたは復元操作のすべてのバックアップデバイスは、同じタイプ、ディスクまたはテープである必要があります。」
「これらのより広いクラス内では、同じプロパティを持つ類似のデバイスを使用する必要があります。類似していないデバイスはエラーメッセージ(3212)を生成します。デバイスの不一致のリスクを回避するには、同等のデバイス(たとえば、同じメーカーの同じモデル番号。」
SQL Server 2016以降、MIRROR TOはURLへのバックアップでサポートされます: https://msdn.Microsoft.com/en-us/library/dn435916(v = sql.130).aspx
しかし、オラ・ハレングレンが言ったことはまだ残っています:
「ミラーリングはディスクとテープの両方に適用されます(ディスクは継続テープをサポートしていません。単一のバックアップまたは復元操作のすべてのバックアップデバイスは、同じタイプ、ディスクまたはテープである必要があります。」
したがって、xp_cmdshellを使用してAzureファイル共有をローカルドライブとしてマップし、この新しいドライブをミラーとして使用するという古いトリックを使用できます。 Azureファイル共有はマッピングできますが、Blobはマッピングできません。
バックアップスクリプトの使用
EXEC xp_cmdshell 'Net Use Z: \\<YOUR_STORAGE_ACCOUNT_NAME>.file.core.windows.net\<YOUR_FILE_SHARE> /u:<YOUR_STORAGE_ACCOUNT_NAME> <YOUR_ACCESS_KEY>'
BACKUP DATABASE <DATABASE_NAME> TO DISK = 'C:\Backup\<BACKUP_NAME>.bak' MIRROR TO DISK = 'Z:\Backup\<BACKUP_NAME>.bak' WITH FORMAT
EXEC xp_cmdshell 'Net Use Z: /delete'
Ola Hallengren DatabaseBackupプロシージャの使用:
EXEC xp_cmdshell 'Net Use Z: \\<YOUR_STORAGE_ACCOUNT_NAME>.file.core.windows.net\<YOUR_FILE_SHARE> /u:<YOUR_STORAGE_ACCOUNT_NAME> <YOUR_ACCESS_KEY>'
EXEC xp_cmdshell 'sqlcmd -E -S <YOUR_SERVER_NAME> -d master -Q "EXECUTE [dbo].[DatabaseBackup] @Databases = ''ALL_DATABASES'', @Directory = N''C:\Backup'', @MirrorDirectory = N''Z:\Backup'', @BackupType = ''FULL'', @Verify = ''Y'', @CleanupTime = 336, @MirrorCleanupTime = 336, @CheckSum = ''Y'', @LogToTable = ''Y''" -b'
EXEC xp_cmdshell 'Net Use Z: /delete'
MIRROR TOは、URLへのバックアップではサポートされていません: https://msdn.Microsoft.com/en-us/library/dn435916.aspx#limitations
具体的には、「バックアップ引数のサポート」セクションで、「ミラー先」にサポートされていないことを示す「-」が表示されます。