لا يؤدي النسخ الاحتياطي المُدار إلى Azure إلى حذف النسخة الاحتياطية بعد فترة الاحتفاظ
-
29-09-2020 - |
سؤال
لقد قمت بإعداد نسخة احتياطية مُدارة من SQL Server لقواعد بياناتنا.لقد حددت أيام الاحتفاظ حتى 4 ، لكنني تحققت للتو من حساب تخزين azure حيث توجد النسخ الاحتياطية المدارة ووجدت أنه لا تزال هناك جميع الملفات من اليوم الذي قمت فيه بإعداد النسخ الاحتياطي المُدار (2015/12/1).
SQL التي استخدمتها في كل قاعدة بيانات مستخدم:
Use msdb;
GO
EXEC smart_admin.sp_set_db_backup
@database_name='TestDB'
,@retention_days=4
,@credential_name='MyCredential'
,@encryption_algorithm ='AES_128'
,@encryptor_type= 'Certificate'
,@encryptor_name='MyBackupCert'
,@enable_backup=1;
نحن نستخدم SQL Server 2014 Enterprise مع Azure VM.
قم بإعداد البرامج التعليمية والمعلومات حول النسخ الاحتياطية المُدارة: MSDN
هل من المفترض أن يقوم النسخ الاحتياطي المُدار من SQL Server إلى Azure بحذف النسخ الاحتياطية تلقائيًا بعد مرور أيام الاحتفاظ المحددة أم أحتاج إلى تنفيذ مهمة مخصصة لذلك؟
المحلول
انتهى بي الأمر بإنشاء وظيفة وكيل خادم Sql والتي تدير هذا مع وضع بوويرشيل:
# Ps1-script to keep azure storageaccount for managed backups clean
Import-Module Azure
$storageAccount = "STORAGEACCOUNTNAME"
$storageKey = "STORAGEKEY"
$blobContainer = "CONTAINERNAME"
$CleanupTime = [DateTime]::UtcNow.AddDays(-4)
$context = New-AzureStorageContext -StorageAccountName $storageAccount -StorageAccountKey $storageKey
Get-AzureStorageBlob -Container $blobContainer -Context $context |
Where-Object { $_.LastModified.UtcDateTime -lt $CleanupTime -and $_.BlobType -eq "PageBlob" -and $_.Name -like "*.bak"} |
Remove-AzureStorageBlob
$CleanupTime = [DateTime]::UtcNow.AddDays(-4)
Get-AzureStorageBlob -Container $blobContainer -Context $context |
Where-Object { $_.LastModified.UtcDateTime -lt $CleanupTime -and $_.BlobType -eq "PageBlob" -and $_.Name -like "*.log"} |
Remove-AzureStorageBlob
يؤدي هذا إلى حذف جميع ملفات .bak و. log التي مضى عليها أكثر من 4 أيام.ومع ذلك ، فإنه لا يعمل على النقط التي لديها عقد إيجار نشط عليها.