إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح هذه المقالة كيفية استعادة قاعدة بيانات خادم SQL في الجهاز الظاهري في Azure من نقطة استعادة التي تم إنشاؤها بواسطة Azure Backup باستخدام API REST.
في نهاية هذه المقالة، ستتعرف على كيفية تنفيذ العمليات التالية باستخدام واجهة برمجة تطبيقات REST:
- عرض نقاط الاستعادة لقاعدة بيانات SQL الاحتياطية.
- استعادة قاعدة بيانات SQL الكاملة.
إشعار
راجع مصفوفة دعم النسخ الاحتياطي لـ SQL لمعرفة المزيد حول التكوينات والسيناريوهات المدعومة.
المتطلبات الأساسية
لنفترض أن لديك قاعدة بيانات SQL احتياطية لاستعادتها. إذا لم يكن لديك واحدة، راجع النسخ الاحتياطي لقواعد بيانات SQL Server في الأجهزة الظاهرية في Azure باستخدام REST API لإنشائها.
في هذه المقالة، سنستخدم الموارد التالية:
- مخازن خدمات الاسترداد: SQLServer2012
- مجموعة الموارد: SQLServerSelfHost
- خادم SQL: sqlserver-0
- قاعدة بيانات SQL: msdb
استعادة المنطقة الأساسية
لتشغيل مهمة الاستعادة المنتظمة في المنطقة الأساسية، راجع المقاطع التالية. للاستعادة في المناطق، راجع المقطع استعادة عبر المنطقة.
إحضار ContainerName وProtectedItemName
بالنسبة لمعظم استدعاءات واجهة برمجية التطبيقات للنظام ذات الصلة بالاستعادة، ستحتاج إلى تمرير قيم معلمات معرّف الموارد المنتظم {containerName} و {protectedItemName}. استخدم سمة المعرف في نص الاستجابة لعملية GET backupprotectableitems لاسترداد قيم لهذه المعلمات. في مثالنا، إن مُعرّف قاعدة البيانات الذي نريد حمايته هو:
/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb
تُترجم القيم على النحو التالي:
-
{containername}: VMAppContainer؛ حسب; SQLServerPMDemo; sqlserver-0 -
{protectedItemName}: قاعدة بيانات sqldatabase؛ mssqlserver؛ msdb
إحضار نقاط الاسترداد لقاعدة بيانات SQL الاحتياطية
لاستعادة أي قاعدة بيانات احتياطية:
حدّد نقطة الاسترداد لتنفيذ عملية الاستعادة.
أدرج نقاط الاسترداد المتوفرة للعنصر الاحتياطي باستخدام استدعاء واجهة برمجة تطبيقات REST فيقائمة نقاط الاسترداد. إنها عملية GET مزودة بجميع القيم ذات الصلة.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints?api-version=2016-12-01حدد قيم URI كما يلي:
-
{fabricName}: Azure -
{vaultName}: SQLServer2012 -
{containerName}: VMAppContainer؛ حسب; SQLServerPMDemo; sqlserver-0 -
{protectedItemName}: قاعدة بيانات sqldatabase؛ mssqlserver؛ msdb -
{resourceGroupName}: SQLServerSelfHost
يشتمل معرف الموارد المنتظم GET على جميع المعلمات المطلوبة. ليس هناك حاجة إلى نص طلب إضافي.
GET "https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.RecoveryServices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/recoveryPoints?api-version=2016-12-01"-
مثال للاستجابة لإحضار نقاط الاسترداد
بمجرد إرسال معرف الموارد المنتظم GET، يتم إرجاع استجابة 200:
HTTP/1.1 200 OK
Pragma: no-cache
X-Content-Type-Options: nosniff
x-ms-request-id: fab6cc6f-db1e-4ac1-acac-fc82ebdb1fdb
x-ms-client-request-id: 6fb93717-2876-47df-b01f-d53af5f08785; 6fb93717-2876-47df-b01f-d53af5f08785
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-reads: 14999
x-ms-correlation-request-id: fab6cc6f-db1e-4ac1-acac-fc82ebdb1fdb
x-ms-routing-request-id: SOUTHINDIA:20180604T061127Z:fab6cc6f-db1e-4ac1-acac-fc82ebdb1fdb
Cache-Control: no-cache
Date: Mon, 04 Jun 2018 06:11:26 GMT
Server: Microsoft-IIS/8.0
X-Powered-By: ASP.NET
{
"value": [
{
"id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/SQLDataBase;mssqlserver;msdb/recoveryPoints/55515936059579",
"name": "55515936059579",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints",
"properties": {
"objectType": "AzureWorkloadSQLRecoveryPoint",
"recoveryPointTimeInUTC": "2018-06-01T22:15:12Z",
"type": "Full"
}
},
{
"id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/SQLDataBase;mssqlserver;msdb/recoveryPoints/62043109781074",
"name": "62043109781074",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints",
"properties": {
"objectType": "AzureWorkloadSQLRecoveryPoint",
"recoveryPointTimeInUTC": "2018-05-31T22:15:08Z",
"type": "Full"
}
},
{
"id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/SQLDataBase;mssqlserver;msdb/recoveryPoints/69710749096214",
"name": "69710749096214",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints",
"properties": {
"objectType": "AzureWorkloadSQLRecoveryPoint",
"recoveryPointTimeInUTC": "2018-05-30T22:15:09Z",
"type": "Full"
}
},
{
"id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/SQLDataBase;mssqlserver;msdb/recoveryPoints/55459165802209",
"name": "55459165802209",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints",
"properties": {
"objectType": "AzureWorkloadSQLRecoveryPoint",
"recoveryPointTimeInUTC": "2018-05-29T22:15:15Z",
"type": "Full"
}
},
{
"id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/SQLDataBase;mssqlserver;msdb/recoveryPoints/56798287946753",
"name": "56798287946753",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints",
"properties": {
"objectType": "AzureWorkloadSQLRecoveryPoint",
"recoveryPointTimeInUTC": "2018-05-28T13:18:15Z",
"type": "Full"
}
},
{
"id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/SQLDataBase;mssqlserver;msdb/recoveryPoints/DefaultRangeRecoveryPoint",
"name": "DefaultRangeRecoveryPoint",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints",
"properties": {
"objectType": "AzureWorkloadSQLPointInTimeRecoveryPoint",
"timeRanges": [
{
"startTime": "2018-05-28T11:03:34Z",
"endTime": "2018-06-02T00:02:31Z"
}
],
"type": "Log"
}
}
]
}
تُحدّد نقطة الاسترداد باستخدام الحقل {name} في الاستجابة أعلاه.
استرداد قاعدة البيانات باستخدام واجهة برمجة تطبيقات REST
إن تشغيل الاستعادة هو طلب POST. لتنفيذ هذه العملية، استخدم مشغل الاستعادة REST API.
POST https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints/{recoveryPointId}/restore?api-version=2019-05-13
القيم {containerName} و{protectedItemName} كما تم تعيينها هنا وrecoveryPointID هو حقل {name} لنقطة الاسترداد المذكورة أعلاه.
POST https://management.azure.com/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLServerSelfHost/providers/Microsoft.RecoveryServices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/recoveryPoints/56798287946753/restore?api-version=2019-05-13'
إنشاء نص الطلب
نموذج نص الطلب لاستعادة قاعدة بيانات إلى دليل البيانات نفسه
يعرف نص الطلب التالي الخصائص المطلوبة لتشغيل استعادة قاعدة بيانات SQL إلى دليل البيانات نفسه.
{
"properties":{
"objectType":"AzureWorkloadSQLRestoreRequest",
"shouldUseAlternateTargetLocation":false,
"isNonRecoverable":false,
"targetInfo":{"ContainerName": "compute;SQLServerPMDemo;sqlserver-0", "DatabaseName" : "SQLINSTANCE/msdb"},
"alternateDirectoryPaths":null,
"isFallbackOnDefaultDirectoryEnabled":true,
"recoveryType":"AlternateLocation",
"sourceResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLServerPMDemo/providers/Azure/virtualmachines/compute;SQLServerPMDemo;sqlserver-0"
}
}
نموذج نص الطلب لاستعادة قاعدة بيانات إلى دليل البيانات نفسه
يعرف نص الطلب التالي الخصائص المطلوبة لتشغيل استعادة قاعدة بيانات SQL إلى دليل البيانات نفسه.
{
"properties":{
"objectType":"AzureWorkloadSQLRestoreRequest",
"shouldUseAlternateTargetLocation":true,
"isNonRecoverable":false,
"targetInfo":
{
"overwriteOption":"Overwrite","containerName":"compute;oneboxrg;oneboxvm","databaseName":"SQLINSTANCE/msdb"},
"alternateDirectoryPaths":[{"mappingType":"Log","sourcePath":"C:\\SQLfiles\\Default.ldf","targetPath":"C:\\SQLFiles\\Temp.ldf"}],
"recoveryType":"AlternateLocation",
"sourceResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLServerPMDemo/providers/Azure/virtualmachines/compute;SQLServerPMDemo;sqlserver-0"
}
}
}
استجابة
يُعد تشغيل أي عملية استعادة بمثابة عملية غير متزامنة. لذلك، تحتاج العملية بإنشاء عملية أخرى إلى تعقب بشكل منفصل.
تقوم بإرجاع استجابتين: 202 (Accepted) عند إنشاء عملية أخرى، و200 (OK) عند اكتمال تلك العملية.
مثال على الرد
Status Code:
OK
Headers:
Pragma : no-cache
Cache-Control : no-cache
Server : Microsoft-IIS/10.0,Microsoft-IIS/10.0
X-Content-Type-Options : nosniff
x-ms-request-id : f17973f5-c788-482f-8aad-6bb50e647a2e
x-ms-client-request-id : b0356a0e-c68d-4ac2-a53f-4f546685146d,b0356a0e-c68d-4ac2-a53f-4f546685146d
X-Powered-By : ASP.NET
Strict-Transport-Security : max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-resource-requests: 149
x-ms-correlation-request-id : f17973f5-c788-482f-8aad-6bb50e647a2e
x-ms-routing-request-id : SOUTHINDIA:20210801T104711Z:f17973f5-c788-482f-8aad-6bb50e647a2e
Date : Sun, 01 Aug 2021 10:47:11 GMT
{
"id":"/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLServerSelfHost/providers/Microsoft.RecoveryServices/vaults/SQLServer2012/backupJobs/0bda1a53-73fa-427e-9a1c-72a2016adee3",
"name": "0bda1a53-73fa-427e-9a1c-72a2016adee3",
"type": "Microsoft.RecoveryServices/vaults/backupJobs",
"properties": {
"jobType": "AzureWorkloadJob",
"actionsInfo": [
1
],
"workloadType": "SQLDataBase",
"duration": "PT1.6543659S",
"extendedInfo": {
"tasksList": [
{
"taskId": "Transfer data from vault",
"status": "InProgress"
}
],
"propertyBag": {
"Job Type": "Recovery to the original database"
}
},
"isUserTriggered": true,
"entityFriendlyName": "msdb [sqlserver-0]",
"backupManagementType": "AzureWorkload",
"operation": "Restore",
"status": "InProgress",
"startTime": "2021-08-01T10:47:09.5865449Z",
"activityId": "b0356a0e-c68d-4ac2-a53f-4f546685146d"
}
}
استعادة عبر المنطقة
إذا قمت بتمكين استعادة المنطقة المشتركة، ستُنسخ نقاط الاسترداد نسخًا متماثلاً إلى المنطقة الثانوية المقترنة أيضًا. بعد ذلك، يمكنك جلب نقاط الاسترداد هذه وتشغيل استعادة الجهاز، الموجود في تلك المنطقة المقترنة. كما هو الحال في حالة الاستعادة العادية، يجب تسجيل الجهاز المستهدف في الخزنة المستهدفة في المنطقة الثانوية. توضح الخطوات التالية العملية الشاملة:
قم بإحضار عناصر النسخ الاحتياطي التي تم نسخها إلى المنطقة الثانوية.
للحصول على المثال أدناه، تحتاج إلى:
- حاوية: VMAppContainer؛ حسب; SQLServerPMDemo; sqlserver-0
- عنصر محمي: sqldatabase;mssqlserver;msdb) لقاعدة البيانات التي تحتاج إلى استعادتها، باستخدام الخطوات المذكورة سابقًا في هذا المستند.
لإحضار نقاط الاسترداد (مميزة و/أو سجلات) يتم نسخها نسخًا متماثلاً إلى المنطقة الثانوية.
ثم اختر الخادم المستهدف، المسجل في المخزن داخل المنطقة الثانوية المقترنة.
تشغيل الاستعادة إلى ذلك الخادم وتعقبه باستخدام JobId.
إشعار
RPO لبيانات النسخ الاحتياطي لتكون متاحة في المنطقة الثانوية هو 12 ساعة. لذلك، عند تشغيل CRR، يكون RPO للمنطقة الثانوية هو 12 ساعة + مدة تكرار السجل (التي يمكن تعيينها إلى 15 دقيقة كحد أدنى).
جلب نقاط استرداد مميزة من المنطقة الثانوية
استخدم List Recovery Points API لجلب قائمة نقاط الاسترداد المتوفرة لقاعدة البيانات في المنطقة الثانوية. في المثال التالي، يتم تطبيق عامل تصفية اختياري لجلب نقاط الاسترداد الكاملة والتفاضلية في نطاق زمني معين.
GET "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLServerSelfHost/providers/Microsoft.RecoveryServices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;compute;SQLServerPMDemo;sqlserver-0/protectedItems/SQLDataBase;mssqlserver;msdb/recoveryPoints/?$filter=startDate eq'2021-07-25 08:41:32 AM' and endDate eq '2021-08-01 08:41:45 AM' and restorePointQueryType eq 'FullAndDifferential' and extendedInfo eq 'True'&api-version=2018-12-20"
مثال حول الاستجابة لإحضار نقاط الاسترداد
Headers:
Pragma : no-cache
X-Content-Type-Options : nosniff
x-ms-request-id : 66b3fbb4-e38a-4a4b-98c7-56db66ab52e6
x-ms-client-request-id : 35eb7834-8b5c-4a2c-adda-eee2ed02eb08,35eb7834-8b5c-4a2c-adda-eee2ed02eb08
Strict-Transport-Security : max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-resource-requests: 149
x-ms-correlation-request-id : 66b3fbb4-e38a-4a4b-98c7-56db66ab52e6
x-ms-routing-request-id : SOUTHINDIA:20210801T102906Z:66b3fbb4-e38a-4a4b-98c7-56db66ab52e6
Cache-Control : no-cache
Date : Sun, 01 Aug 2021 10:29:06 GMT
Server : Microsoft-IIS/10.0
X-Powered-By : ASP.NET
Body:
{
"value": [
{
"id":
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLServerSelfHost/providers/Microsoft.RecoveryServices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;compute;SQLServerPMDemo;sqlserver-0/protectedItems/SQLDataBase;mssqlserver;msdb/RecoveryPoints/932604119111216382",
"name": "932604119111216382",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints",
"properties": {
"objectType": "AzureWorkloadSQLRecoveryPoint",
"recoveryPointTimeInUTC": "2021-07-31T16:33:48Z",
"type": "Full"
}
},
{
"id":
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLServerSelfHost/providers/Microsoft.RecoveryServices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;compute;SQLServerPMDemo;sqlserver-0/protectedItems/SQLDataBase;mssqlserver;msdb/RecoveryPoints/932599942005436803",
"name": "932599942005436803",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints",
"properties": {
"objectType": "AzureWorkloadSQLRecoveryPoint",
"recoveryPointTimeInUTC": "2021-07-30T16:33:49Z",
"type": "Full"
}
},
.....
تُحدّد نقطة الاسترداد باستخدام الحقل {name} في الاستجابة أعلاه.
الحصول على رمز مميز للوصول
لتنفيذ استعادة عبر المنطقة، ستحتاج رمز مميز للوصول لتمكين الاتصال المناسب بين خدمات Azure Backup. للحصول على رمز مميز للوصول، اتبع الخطوات التالية:
استخدم واجهة برمجة تطبيقات خصائص Microsoft Entra لجلب خصائص Microsoft Entra للمنطقة الثانوية (westus في المثال أدناه).
GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/locations/westus/backupAadProperties?api-version=2018-12-20إن تنسيق الاستجابة التي تم إرجاعها هي كالآتي:
{ "properties": { "tenantId": "00000000-0000-0000-0000-000000000000", "audience": "https://RecoveryServices/IaasCoord/aadmgmt/wus", "servicePrincipalObjectId": "00000000-0000-0000-0000-000000000000" } }استخدم واجهة برمجة تطبيقات الحصول على الرمز المميز للوصول للحصول على رمز مميز للوصول لتمكين الاتصال بين خدمات Azure Backup.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints/{recoveryPointId}/accessToken?api-version=2018-12-20بالنسبة لنص الطلب، الصق محتويات الاستجابة التي تم إرجاعها بواسطة واجهة برمجة تطبيقات خصائص Microsoft Entra في الخطوة السابقة.
فيما يلي تنسيق الاستجابة التي تم إرجاعها:
{ "protectableObjectUniqueName": "MSSQLSERVER/model", "protectableObjectFriendlyName": "msdb", "protectableObjectWorkloadType": "SQL", "protectableObjectProtectionState": "Protected", "protectableObjectContainerHostOsName": "sqlserver-0", "protectableObjectParentLogicalContainerName": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLServerPMDemo/providers/Microsoft.Compute/virtualMachines/sqlserver-0", "containerId": "0000000", "policyName": "HourlyLogBackup", "policyId": "00000000-0000-0000-0000-000000000000", "objectType": "WorkloadCrrAccessToken", "accessTokenString": "<access-token-string>", "subscriptionId": "00000000-0000-0000-0000-000000000000", "resourceGroupName": "SQLServerSelfHost", "resourceName": "SQLServer2012", "resourceId": "0000000000000000000", "protectionContainerId": 0000000, "recoveryPointId": "932603497994988273", "recoveryPointTime": "7/31/2021 4:33:17 PM", "containerName": "Compute;SQLServerPMDemo;sqlserver-0", "containerType": "VMAppContainer", "backupManagementType": "AzureWorkload", "datasourceType": "SQLDataBase", "datasourceName": "msdb", "datasourceId": "932350676859704517", "datasourceContainerName": "Compute;SQLServerPMDemo;sqlserver-0", "coordinatorServiceStampId": "00000000-0000-0000-0000-000000000000", "coordinatorServiceStampUri": "https://pod01-wbcm1.eus.backup.windowsazure.com", "protectionServiceStampId": "00000000-0000-0000-0000-000000000000", "protectionServiceStampUri": "https://pod01-prot1j-int.eus.backup.windowsazure.com", "rpOriginalSAOption": false, "rpIsManagedVirtualMachine": false, "bMSActiveRegion": "EastUS" }
استعادة الأقراص إلى المنطقة الثانوية
استخدم واجهة برمجة التطبيقات لمشغل الاستعادة عبر المناطق لاستعادة عنصر إلى المنطقة الثانوية.
POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/locations/{azureRegion}/backupCrossRegionRestore?api-version=2018-12-20
يجب أن يكون نص الطلب على جزأين:
crossRegionRestoreAccessDetails: الصق كتلة properties للاستجابة من طلب Get Access Token API الذي تم إجراؤه في الخطوة السابقة لملء هذا الجزء من نص الطلب.
restoreRequest: لملء جزء restoreRequest من نص الطلب، ستحتاج إلى تمرير تفاصيل الحاوية (المسجلة في مخزنٍ بالمنطقة الثانوية) حيث يجب استعادة قاعدة البيانات، إضافةً إلى الاسم الذي يجب ضمنه تخزين قاعدة البيانات المُستعادة. لإجراء استعادة النسخة احتياطية كاملة إلى المنطقة الثانوية، حدّد AlternateLocation كنوع الاسترداد.
وفيما يلي نموذج نص طلب استعادة الأقراص الخاصة بالجهاز الظاهري إلى المنطقة الثانوية:
{
"crossRegionRestoreAccessDetails": {
"protectableObjectUniqueName": "MSSQLSERVER/model",
"protectableObjectFriendlyName": "msdb",
"protectableObjectWorkloadType": "SQL",
"protectableObjectProtectionState": "Protected",
"protectableObjectContainerHostOsName": "sqlserver-0",
"protectableObjectParentLogicalContainerName": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLServerPMDemo/providers/Microsoft.Compute/virtualMachines/sqlserver-0",
"containerId": "0000000",
"policyName": "HourlyLogBackup",
"policyId": "00000000-0000-0000-0000-000000000000",
"objectType": "WorkloadCrrAccessToken",
"accessTokenString": "<access-token-string>",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"resourceGroupName": "SQLServerSelfHost",
"resourceName": "SQLServer2012",
"resourceId": "0000000000000000000",
"protectionContainerId": 0000000,
"recoveryPointId": "932603497994988273",
"recoveryPointTime": "7/31/2021 4:33:17 PM",
"containerName": "Compute;SQLServerPMDemo;sqlserver-0",
"containerType": "VMAppContainer",
"backupManagementType": "AzureWorkload",
"datasourceType": "SQLDataBase",
"datasourceName": "msdb",
"datasourceId": "932350676859704517",
"datasourceContainerName": "Compute;SQLServerPMDemo;sqlserver-0",
"coordinatorServiceStampId": "00000000-0000-0000-0000-000000000000",
"coordinatorServiceStampUri": "https://pod01-wbcm1.eus.backup.windowsazure.com",
"protectionServiceStampId": "00000000-0000-0000-0000-000000000000",
"protectionServiceStampUri": "https://pod01-prot1j-int.eus.backup.windowsazure.com",
"rpOriginalSAOption": false,
"rpIsManagedVirtualMachine": false,
"bMSActiveRegion": "EastUS"
},
"restoreRequest": {
"objectType": "AzureWorkloadSQLRestoreRequest",
"shouldUseAlternateTargetLocation": true,
"isNonRecoverable": false,
"alternateDirectoryPaths": [],
"recoveryType": "AlternateLocation",
"sourceResourceId":"/subscriptions/600000000-0000-0000-0000-000000000000/resourceGroups/SQLServerPMDemo/providers/Microsoft.Compute/virtualMachines/sqlserver-0",
"targetInfo": {
"overwriteOption": "FailOnConflict",
"containerId":"/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RestoreRG/providers/Microsoft.RecoveryServices/vaults/wusRestoreVault/backupFabrics/Azure/protectionContainers/vmappcontainer;compute;restorerg;wusrestorevm",
"databaseName": "MSSQLSERVER/msdb_restored_8_1_2021_1758"
}
}
}
الخطوات التالية
إدارة قواعد بيانات خادم SQL في أجهزة Azure الظاهرية باستخدام مدخل AzureوAzure CLIوواجهة برمجة تطبيقات REST.
للمزيد من المعلومات حول واجهات برمجة التطبيقات REST للنسخ الاحتياطي لـ Azure، راجع المستندات التالية: