Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł wyjaśnia, jak przywrócić bazę danych serwera SQL w maszynie wirtualnej Azure z punktu przywracania utworzonego przez Azure Backup za pomocą API RcEST.
Na końcu tego artykułu dowiesz się, jak wykonywać następujące operacje przy użyciu interfejsu API REST:
- Wyświetlanie punktów przywracania dla kopii zapasowej bazy danych SQL.
- Wyświetlanie punktów odzyskiwania migawek oraz zakresów odzyskiwania do określonego momentu dla baz danych i instancji SQL.
- Pobierz bazy danych i ścieżki katalogów danych zawarte w punkcie odzyskiwania.
- Przywracanie pełnej bazy danych SQL.
Aby wyświetlić scenariusze tworzenia kopii zapasowych i przywracania, które obecnie obsługujemy, zobacz macierz wsparcia. Często zadawane pytania można znaleźć w często zadawanych pytaniach.
Wymagania wstępne
Przyjęto założenie, że utworzono kopię zapasową bazy danych SQL na potrzeby przywracania. Jeśli jej nie masz, zobacz Tworzenie kopii zapasowych baz danych programu SQL Server na maszynach wirtualnych platformy Azure przy użyciu interfejsu API REST .
W tym artykule użyjemy następujących zasobów:
- Magazyn usługi Recovery Services: SQLServer2012
- Grupa zasobów: SQLServerSelfHost
- Sql Server: sqlserver-0
- Baza danych SQL: msdb
Przywracanie regionu podstawowego
Aby można było uruchomić regularny proces przywracania w głównym regionie, zobacz następujące sekcje. Aby uzyskać informacje o przywracaniu między regionami, zobacz sekcję Przywracanie między regionami .
Pobierz "ContainerName" i "ProtectedItemName"
W przypadku większości wywołań interfejsu API związanych z przywracaniem należy przekazać wartości parametrów {containerName} i {protectedItemName} identyfikatora URI. Użyj atrybutu ID w treści odpowiedzi operacji GET backupprotectableitems , aby pobrać wartości dla tych parametrów. W naszym przykładzie identyfikator bazy danych, którą chcemy chronić, to:
/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
Wartości są tłumaczone w następujący sposób:
-
{containername}: VMAppContainer; Compute; SQLServerPMDemo; sqlserver-0 -
{protectedItemName}: sqldatabase; mssqlserver; msdb
Pobieranie punktów odzyskiwania dla zarchiwizowanej bazy danych SQL
Aby przywrócić każdą kopię zapasową bazy danych:
Wybierz punkt odzyskiwania, aby wykonać operację przywracania.
Wyświetl listę dostępnych punktów odzyskiwania elementu kopii zapasowej przy użyciu wywołania interfejsu API REST listy punktów odzyskiwania . Jest to operacja GET ze wszystkimi odpowiednimi wartościami.
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-01Ustaw wartości identyfikatora URI w następujący sposób:
-
{fabricName}: Azure -
{vaultName}: SQLServer2012 -
{containerName}: VMAppContainer; Compute; SQLServerPMDemo; sqlserver-0 -
{protectedItemName}: sqldatabase; mssqlserver; msdb -
{resourceGroupName}: SQLServerSelfHost
Identyfikator URI GET zawiera wszystkie wymagane parametry. Nie jest wymagana żadna dodatkowa treść żądania.
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"-
Przykładowa odpowiedź na potrzeby pobierania punktów odzyskiwania
Po przesłaniu identyfikatora URI GET otrzymujesz odpowiedź 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"
}
}
]
}
Punkt odzyskiwania jest identyfikowany z polem {name} w powyższej odpowiedzi.
Snapshot zapytań i punkty odzyskiwania strumieniowego
Dla instancji SQL i baz danych chronionych migawkami użyj wersji interfejsu API 2024-01-31-preview dla następujących zapytań o punkty odzyskiwania. Zamień symbole zastępcze URI na szczegóły sejfu oraz nazwy kontenerów i chronionych elementów zwrócone przez listowanie chronionych elementów. Zakoduj w formacie URL wyrażenie filtra podczas wysyłania żądania.
Użyj restorePointQueryType do wyboru typów punktów odzyskania:
| Value | Zwrócono punkty odzyskiwania |
|---|---|
FullDifferentialAndSnapshot |
Pełne, różnicowe i migawkowe punkty odzyskiwania dla bazy danych. |
Snapshot |
Punkty odzyskiwania snapshotów dla bazy danych lub instancji. |
FullAndDifferential |
Przesyłanie pełnych i różnicowych punktów odzyskiwania dla bazy danych. |
Log |
Zakresy czasu odzyskiwania dziennika dla bazy danych. |
Wymień pełne, różnicowe i snapshot punkty odzysku
Użyj nazwy chronionego elementu bazy danych, takiej jak SQLDataBase;mssqlserver;testdb:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}/protectedItems/{databaseProtectedItemName}/recoveryPoints?api-version=2024-01-31-preview&$filter=restorePointQueryType eq 'FullDifferentialAndSnapshot'
Lista punktów odzyskiwania snapshotów
Dla bazy danych użyj nazwy chronionego elementu bazy danych:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}/protectedItems/{databaseProtectedItemName}/recoveryPoints?api-version=2024-01-31-preview&$filter=restorePointQueryType eq 'Snapshot'
Na przykład użyj nazwy elementu chronionego przez instancję, takiej jak SQLInstance;mssqlserver:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}/protectedItems/{instanceProtectedItemName}/recoveryPoints?api-version=2024-01-31-preview&$filter=restorePointQueryType eq 'Snapshot'
Lista punktów odzyskiwania pełnego i różnicowego w trybie strumieniowym
Możesz także określić okno czasowe i uwzględnić miękkie usunięte punkty odzyskiwania:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}/protectedItems/{databaseProtectedItemName}/recoveryPoints?api-version=2024-01-31-preview&$filter=startDate eq '2024-02-15 05:12:12 PM' and endDate eq '2024-02-22 05:12:12 PM' and restorePointQueryType eq 'FullAndDifferential' and includeSoftDeletedRP eq 'true'
Zastąp przykładowe daty wymaganym przedziałem czasowym. Tablica value zawiera punkty odzyskiwania o właściwościach takich jak recoveryPointTimeInUTC, type, oraz recoveryPointTierDetails. Informacje o retencji mogą pojawić się w recoveryPointProperties, w tym expiryTime, ruleName, oraz isSoftDeleted.
Zakresy odzyskiwania dziennika zapytań na potrzeby przywracania do określonego momentu
Aby wymienić zakresy odzyskiwania logów dla bazy danych, użyj następującego żądania:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}/protectedItems/{databaseProtectedItemName}/recoveryPoints?api-version=2024-01-31-preview&$filter=restorePointQueryType eq 'Log'
Odpowiedź zawiera element DefaultRangeRecoveryPoint. Poniższy przykład pokazuje wybrane pola odpowiedzi:
{
"value": [
{
"name": "DefaultRangeRecoveryPoint",
"properties": {
"objectType": "AzureWorkloadSQLPointInTimeRecoveryPoint",
"timeRanges": [
{
"startTime": "2024-02-07T17:12:13.2853054Z",
"endTime": "2024-02-22T15:30:13Z"
}
],
"type": "Log"
}
}
]
}
Wybierz czas przywrócenia w zwróconych zakresach.
Wyszukuj zakresy dziennika bazy danych według trybu odzyskiwania
Dla odzyskiwania opartego na strumieniowaniu określ recoveryMode eq 'WorkloadRecovery':
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}/protectedItems/{databaseProtectedItemName}/recoveryPoints?api-version=2024-01-31-preview&$filter=restorePointQueryType eq 'Log' and recoveryMode eq 'WorkloadRecovery'
Dla odzyskiwania opartego na migawkach określ recoveryMode eq 'SnapshotAttachAndRecover':
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}/protectedItems/{databaseProtectedItemName}/recoveryPoints?api-version=2024-01-31-preview&$filter=restorePointQueryType eq 'Log' and recoveryMode eq 'SnapshotAttachAndRecover'
Oba zapytania zwracają pokazany wcześniej format odpowiedzi zakresu odzyskiwania dziennika.
Wyszukiwanie zakresów dziennika bazy danych dla przywracania instancji
Na przykład w przypadku przywracania do określonego punktu w czasie najpierw wybierz punkt odzyskiwania migawki instancji i pobierz dołączone do niego bazy danych. Dla każdej uwzględnionej bazy danych odpytaj jej zakresy logów przy użyciu wybranych szczegółów migawki bazowej:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}/protectedItems/{databaseProtectedItemName}/recoveryPoints?api-version=2024-01-31-preview&$filter=restorePointQueryType eq 'Log' and recoveryMode eq 'SnapshotAttachAndRecover' and baseSnapshotRPId eq '{baseSnapshotRPId}' and baseRPDatasourceId eq '{baseRPDatasourceId}'
-
{baseSnapshotRPId}:namepunkt odzyskiwania migawki wybranej instancji. -
{baseRPDatasourceId}:protectedItemDataSourceIdchronionego elementu instancji, a nie identyfikator źródła danych bazy podrzędnej. -
{databaseProtectedItemName}: Chroniona nazwa elementu podrzędnej bazy danych, której dotyczy zapytanie.
Uzyskaj bazy danych i ścieżki dysków w migawce instancji
Pobierz wybrany punkt odzyskiwania instancji, aby uzyskać zawarte w nim bazy danych i ścieżki dysków. Używaj tych samych metadanych przy przygotowywaniu przywracania migawek instancji lub przywracania punktu w czasie instancji:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}/protectedItems/{instanceProtectedItemName}/recoveryPoints/{snapshotRecoveryPointId}?api-version=2024-01-31-preview
{snapshotRecoveryPointId} jest name punktem odzyskiwania. Poniższy przykład pokazuje wybrane pola odpowiedzi:
{
"name": "2265756871711897922",
"properties": {
"objectType": "AzureWorkloadSQLRecoveryPoint",
"extendedInfo": {
"dataDirectoryTimeInUTC": "2024-03-13T08:03:25Z",
"dataDirectoryPaths": [
{
"type": "DiskDrives",
"path": "F:\\"
},
{
"type": "DiskDrives",
"path": "G:\\"
}
],
"includedDatabases": [
{
"datasourceId": "2265838378698362078",
"datasourceName": "MSSQLSERVER;user1"
}
],
"snapshotRecoveryPointInfo": {}
},
"recoveryPointTimeInUTC": "2024-03-13T08:03:25Z",
"type": "SnapshotFull",
"recoveryPointTierDetails": [
{
"type": "InstantRP",
"status": "Valid"
}
]
}
}
extendedInfo.includedDatabases identyfikuje bazy danych zarejestrowane w wybranej migawce.
extendedInfo.dataDirectoryPaths identyfikuje ścieżki dysku dostępne dla zaawansowanej konfiguracji przywracania.
Pobierz ścieżki bazy danych do zaawansowanej konfiguracji przywracania
Aby uzyskać szczegóły punktu odzyskiwania bazy danych dla strumieniowania lub migawki:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}/protectedItems/{databaseProtectedItemName}/recoveryPoints/{recoveryPointId}?api-version=2023-02-01
Sprawdź properties.extendedInfo.dataDirectoryPaths pod kątem ścieżek plików danych i dziennika oraz nazw logicznych. Na przykład:
{
"dataDirectoryTimeInUTC": "2024-03-04T18:03:35Z",
"dataDirectoryPaths": [
{
"type": "Data",
"path": "F:\\DATA\\TestDB1.mdf",
"logicalName": "TestDB1"
},
{
"type": "Log",
"path": "F:\\LOG\\TestDB1_log.ldf",
"logicalName": "TestDB1_log"
}
],
"snapshotRecoveryPointInfo": {}
}
Do przywracania punktów w czasie bazy danych należy żądać rozszerzonych informacji przy wymienianiu zakresów odzyskiwania logów. Poniższy przykład wykorzystuje odzyskiwanie oparte na migawkach:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}/protectedItems/{databaseProtectedItemName}/recoveryPoints?api-version=2023-02-01&$filter=startDate eq '2024-02-06 07:50:56 AM' and endDate eq '2024-03-07 07:23:05 AM' and extendedInfo eq 'true' and restorePointQueryType eq 'Log' and recoveryMode eq 'SnapshotAttachAndRecover'
Zamień przykładowe daty na wymagane okno zapytania. Odpowiedź zawiera zakresy dziennika odzyskiwania i properties.extendedInfo, w tym dataDirectoryTimeInUTC, dataDirectoryPaths oraz snapshotRecoveryPointInfo.
Poprzedzające zapytania pobierają punkty odzyskiwania i metadane konfiguracji przywracania. Poniższa sekcja opisuje istniejące żądanie przywrócenia strumieniowej bazy danych.
Odzyskiwanie bazy danych przy użyciu interfejsu API REST
Uruchomienie przywracania to żądanie POST. Aby wykonać tę operację, użyj trigger restore 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
Wartości {containerName} i {protectedItemName} są ustawione tutaj, a identyfikator recoveryPointID to pole {name} punktu odzyskiwania, o którym wspomniano powyżej.
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'
Tworzenie treści żądania
Przykład treści żądania przywrócenia bazy danych do tego samego katalogu danych
Poniższe żądanie definiuje właściwości wymagane do inicjowania przywracania bazy danych SQL do tego samego katalogu.
{
"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"
}
}
Przykład treści żądania przywrócenia bazy danych do alternatywnego katalogu danych
Poniższe żądanie definiuje właściwości wymagane do inicjowania przywracania bazy danych SQL do tego samego katalogu.
{
"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"
}
}
}
Odpowiedź
Wyzwalanie operacji przywracania jest operacją asynchroniczną. Ta operacja tworzy kolejną operację, która musi być śledzona oddzielnie.
Zwraca dwie odpowiedzi: 202 (Zaakceptowane) podczas tworzenia innej operacji i 200 (OK) po zakończeniu tej operacji.
Przykład odpowiedzi
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"
}
}
Przywracanie między regionami
Jeśli włączono przywracanie między regionami, punkty odzyskiwania również zostaną zreplikowane do sparowanego regionu pomocniczego. Następnie możesz pobrać te punkty odzyskiwania i zainicjować przywracanie na maszynie, która znajduje się w regionie współpracującym. W przypadku normalnego przywracania maszyna docelowa powinna być zarejestrowana w magazynie docelowym w regionie pomocniczym. W poniższych krokach opisano pełny proces:
Pobierz elementy kopii zapasowej replikowane do regionu pomocniczego.
W poniższym przykładzie musisz mieć następujące elementy:
- Kontener: VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0
- Element chroniony: sqldatabase; mssqlserver; msdb) dla bazy danych, która musi zostać przywrócona, wykonując kroki wymienione wcześniej w tym dokumencie.
Pobierz punkty odzyskiwania (odrębne i/lub dzienniki), które są replikowane do regionu pomocniczego.
Wybierz serwer docelowy, który jest zarejestrowany w magazynie w sparowanym regionie pomocniczym.
Wyzwalaj przywracanie do tego serwera i śledź go przy użyciu identyfikatora JobId.
Uwaga / Notatka
Punkt odzyskiwania (RPO) dla danych kopii zapasowej, który ma być dostępny w regionie zapasowym, wynosi 12 godzin. W związku z tym po włączeniu funkcji CRR docelowy punkt odzyskiwania dla regionu pomocniczego wynosi 12 godzin plus czas trwania częstotliwości rejestrowania dzienników (który można ustawić na co najmniej 15 minut).
Pobierz unikalne punkty odzyskiwania z regionu pomocniczego
Użyj interfejsu API List Recovery Points, aby pobrać listę dostępnych punktów odzyskiwania dla bazy danych w regionie zapasowym. W poniższym przykładzie opcjonalny filtr jest stosowany do pobierania pełnych i różnicowych punktów odzyskiwania w danym zakresie czasowym.
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"
Przykładowa odpowiedź dla odczytu punktów odzyskiwania
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"
}
},
.....
Punkt odzyskiwania jest identyfikowany z polem {name} w powyższej odpowiedzi.
Uzyskiwanie tokenu dostępu
Aby wykonać przywracanie między regionami, należy wymagać tokenu dostępu, aby umożliwić właściwą komunikację między usługami Azure Backup. Aby uzyskać token dostępu, wykonaj następujące kroki:
Użyj interfejsu API Microsoft Entra Properties , aby pobrać właściwości Microsoft Entra dla regionu zapasowego (westus w poniższym przykładzie).
GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/locations/westus/backupAadProperties?api-version=2018-12-20Zwrócona odpowiedź ma następujący format:
{ "properties": { "tenantId": "00000000-0000-0000-0000-000000000000", "audience": "https://RecoveryServices/IaasCoord/aadmgmt/wus", "servicePrincipalObjectId": "00000000-0000-0000-0000-000000000000" } }Użyj interfejsu API uzyskiwania tokenu dostępu, aby uzyskać token dostępu w celu umożliwienia komunikacji między usługami 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-20Aby wykonać żądanie, wklej zawartość odpowiedzi zwróconej przez Microsoft Entra Properties API w poprzednim kroku.
Zwrócony format odpowiedzi jest następujący:
{ "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" }
Przywracanie dysków do regionu pomocniczego
Użyj interfejsu API wyzwalacza przywracania między regionami , aby przywrócić element do regionu pomocniczego.
POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/locations/{azureRegion}/backupCrossRegionRestore?api-version=2018-12-20
Treść żądania powinna zawierać dwie części:
crossRegionRestoreAccessDetails: wklej blok właściwości odpowiedzi z żądania interfejsu API uzyskiwania tokenu dostępu wykonanego w poprzednim kroku, aby wypełnić ten segment treści żądania.
restoreRequest: Aby wypełnić segment restoreRequest w treści żądania, należy przekazać szczegóły kontenera (zarejestrowanego w magazynie w regionie pomocniczym), do którego ma zostać przywrócona baza danych, wraz z nazwą, pod którą przywrócona baza danych powinna być przechowywana. Aby wykonać przywracanie pełnej kopii zapasowej do regionu pomocniczego, określ AlternateLocation jako typ odzyskiwania.
Przykładowa treść żądania w celu przywrócenia dysków maszyny wirtualnej do regionu pomocniczego jest następująca:
{
"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"
}
}
}
Wykonaj przywracanie międzyregionowe w określonym momencie dla instancji SQL chronionej polityką snapshot
Użyj tego przepływu, aby przywrócić bazy danych zawarte w snapshotzie instancji SQL i odtworzyć kopie zapasowe logów do wspólnego punktu w czasie w regionie wtórnym.
Important
Wybrany punkt w czasie musi być objęty zakresem logów każdej bazy danych, którą chcesz odzyskać przy użyciu migawki instancji. Poproś o token dostępu dla chronionego elementu wystąpienia SQL oraz wybranego konkretnego punktu odzyskiwania migawki.
Poznaj migawkę instancji i zakresy logów
Wypisz punkty odzyskiwania dla chronionego elementu wystąpienia SQL.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{sourceVaultResourceGroup}/providers/Microsoft.RecoveryServices/vaults/{sourceVaultName}/backupFabrics/Azure/protectionContainers/{sourceContainerName}/protectedItems/SQLInstance%3Bmssqlserver/recoveryPoints?api-version=2023-01-15Wybierz punkt odzyskania, którego odpowiedź zawiera wszystkie następujące wartości:
- Parametr
properties.typema wartośćSnapshotFull. - Parametr
properties.crossRegionRestoreStatema wartośćSupported. -
properties.recoveryPointTierDetailszawiera wpisHardenedRP, którego status toValid.
- Parametr
Pobierz wybrany punkt odzyskiwania, aby pobrać jego rozszerzone autoryzowane informacje.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{sourceVaultResourceGroup}/providers/Microsoft.RecoveryServices/vaults/{sourceVaultName}/backupFabrics/Azure/protectionContainers/{sourceContainerName}/protectedItems/SQLInstance%3Bmssqlserver/recoveryPoints/{instanceSnapshotRecoveryPointId}?api-version=2023-01-15Użyj
properties.extendedInfo.includedDatabasesdo identyfikacji baz danych potomnych zawartych w migawce. Odpowiedź zawiera także ścieżki dysku źródłowe oraz metadane migawkowe potrzebne do przywrócenia.Pobierz chroniony element instancji SQL i zapisz
properties.protectedItemDataSourceId.GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{sourceVaultResourceGroup}/providers/Microsoft.RecoveryServices/vaults/{sourceVaultName}/backupFabrics/Azure/protectionContainers/{sourceContainerName}/protectedItems/SQLInstance%3Bmssqlserver?api-version=2023-01-15Dla każdej uwzględnionej bazy danych należy podać zakres logów powiązany z wybraną migawką instancji.
GET "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{sourceVaultResourceGroup}/providers/Microsoft.RecoveryServices/vaults/{sourceVaultName}/backupFabrics/Azure/protectionContainers/{sourceContainerName}/protectedItems/SQLDataBase%3Bmssqlserver%3B{databaseName}/recoveryPoints?api-version=2023-01-15&$filter=restorePointQueryType eq 'Log' and recoveryMode eq 'SnapshotAttachAndRecover' and baseSnapshotRPId eq '{instanceSnapshotRecoveryPointId}' and baseRPDatasourceId eq '{instanceProtectedItemDataSourceId}'"Odpowiedź zawiera element
DefaultRangeRecoveryPoint. Wybierz UTCpointInTime, który mieści się w zwróconymproperties.timeRangesdla każdej przywracanej bazy danych.
Pobierz token dostępu do snapshotu instancji
Pobierz właściwości Microsoft Entra dla regionu wtórnego.
GET "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/locations/{secondaryRegion}/backupAadProperties?api-version=2023-01-15&$filter=backupManagementType eq 'AzureWorkload'"
Przekaż zwrócony obiekt properties w treści żądania, gdy wysyłasz żądanie o token dostępu dla instancji SQL i wybranego punktu odzyskiwania migawki.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{sourceVaultResourceGroup}/providers/Microsoft.RecoveryServices/vaults/{sourceVaultName}/backupFabrics/Azure/protectionContainers/{sourceContainerName}/protectedItems/SQLInstance%3Bmssqlserver/recoveryPoints/{instanceSnapshotRecoveryPointId}/accessToken?api-version=2023-01-15
{
"properties": {
"tenantId": "<tenant-id>",
"audience": "<audience-returned-by-the-service>",
"servicePrincipalObjectId": "<service-principal-object-id>",
"identityVersion": 1
}
}
Wyzwalanie przywracania do punktu w czasie instancji SQL
Użyj AzureWorkloadSQLPointInTimeRestoreRequest z SnapshotAttachAndRecover. Skopiuj pełny properties obiekt z odpowiedzi tokenu dostępu do crossRegionRestoreAccessDetails.
POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/locations/{secondaryRegion}/backupCrossRegionRestore?api-version=2023-01-15
{
"crossRegionRestoreAccessDetails": {
"objectType": "WorkloadCrrAccessToken",
"accessTokenString": "<access-token-string>",
"recoveryPointId": "<instance-snapshot-recovery-point-id>",
"datasourceType": "SQLInstance",
"datasourceName": "mssqlserver"
},
"restoreRequest": {
"objectType": "AzureWorkloadSQLPointInTimeRestoreRequest",
"shouldUseAlternateTargetLocation": true,
"recoveryMode": "SnapshotAttachAndRecover",
"isNonRecoverable": false,
"recoveryType": "AlternateLocation",
"sourceResourceId": "/subscriptions/{subscriptionId}/resourceGroups/{sourceVmResourceGroup}/providers/Microsoft.Compute/virtualMachines/{sourceVmName}",
"targetVirtualMachineId": "/subscriptions/{subscriptionId}/resourceGroups/{targetVmResourceGroup}/providers/Microsoft.Compute/virtualMachines/{targetVmName}",
"targetResourceGroupName": "{targetVmResourceGroup}",
"pointInTime": "2026-08-09T17:18:23.500Z",
"alternateDirectoryPaths": [
{
"mappingType": "DiskDrives",
"sourcePath": "F:\\",
"targetPath": "J:\\"
},
{
"mappingType": "DiskDrives",
"sourcePath": "G:\\",
"targetPath": "K:\\"
}
],
"targetInfo": {
"containerId": "/subscriptions/{subscriptionId}/resourceGroups/{targetVaultResourceGroup}/providers/Microsoft.RecoveryServices/vaults/{targetVaultName}/backupFabrics/Azure/protectionContainers/{targetContainerName}",
"overwriteOption": "FailOnConflict",
"databaseName": "MSSQLSERVER/*_{databaseNameSuffix}"
},
"userAssignedManagedIdentityDetails": {
"identityArmId": "/subscriptions/{subscriptionId}/resourceGroups/{identityResourceGroup}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}",
"userAssignedIdentityProperties": {
"clientId": "<managed-identity-client-id>",
"principalId": "<managed-identity-principal-id>"
}
}
}
}
Skrócony obiekt crossRegionRestoreAccessDetails powyżej pokazuje pola identyfikujące scenariusz instancji. W rzeczywistym żądaniu skopiuj każdą właściwość zwróconą przez interfejs API tokena dostępu, w tym tokenExtendedInformation, gdy jest obecny.
Wykonaj międzyregionalne przywracanie logów dla bazy potomnej chronionej polityką snapshot
Użyj tego przepływu, aby przywrócić jedną podrzędną bazę danych do wybranego punktu w czasie, gdy baza danych jest chroniona w ramach zasad migawki instancji SQL.
Important
W przypadku przywracania dziennika bazy podrzędnej zażądaj tokena dostępu do chronionego elementu podrzędnego SQLDataBase oraz DefaultRangeRecoveryPoint. Nie żądaj tokena w punkcie odzyskiwania nadrzędnej instancji SQL.
Odkryj zakres logów podrzędnej bazy danych
Wymień punkty odzyskiwania dziennika dla chronionego elementu podrzędnej bazy danych.
GET "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{sourceVaultResourceGroup}/providers/Microsoft.RecoveryServices/vaults/{sourceVaultName}/backupFabrics/Azure/protectionContainers/{sourceContainerName}/protectedItems/SQLDataBase%3Bmssqlserver%3B{databaseName}/recoveryPoints?api-version=2023-01-15&$filter=restorePointQueryType eq 'Log'"
Odpowiedź zawiera DefaultRangeRecoveryPoint z jednym lub większą liczbą zakresów UTC:
{
"value": [
{
"name": "DefaultRangeRecoveryPoint",
"properties": {
"objectType": "AzureWorkloadSQLPointInTimeRecoveryPoint",
"timeRanges": [
{
"startTime": "2026-07-26T19:25:29.9811766Z",
"endTime": "2026-08-10T18:31:23Z"
}
],
"type": "Log"
}
}
]
}
Wybierz UTC pointInTime z jednego ze zwróconych zakresów.
Pobierz token dostępu do zakresu dziennika podrzędnej bazy danych
Pobierz właściwości Microsoft Entra dla regionu wtórnego, używając filtra obciążeń Azure pokazanego w sekcji instancji SQL. Przekaż zwrócony obiekt properties podczas żądania tokena dostępu do podrzędnej bazy danych.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{sourceVaultResourceGroup}/providers/Microsoft.RecoveryServices/vaults/{sourceVaultName}/backupFabrics/Azure/protectionContainers/{sourceContainerName}/protectedItems/SQLDataBase%3Bmssqlserver%3B{databaseName}/recoveryPoints/DefaultRangeRecoveryPoint/accessToken?api-version=2023-01-15
Zwrócone właściwości tokena dostępu identyfikują wybraną bazę potomną z wartościami takimi jak:
{
"properties": {
"protectableObjectUniqueName": "MSSQLSERVER/{databaseName}",
"protectableObjectFriendlyName": "{databaseName}",
"objectType": "WorkloadCrrAccessToken",
"accessTokenString": "<access-token-string>",
"recoveryPointId": "DefaultRangeRecoveryPoint",
"datasourceType": "SQLDataBase",
"datasourceName": "{databaseName}"
}
}
Wyzwól przywracanie dziennika bazy potomnej
Użyj AzureWorkloadSQLPointInTimeRestoreRequest z SnapshotAttachAndRecover. Docelowa nazwa bazy danych musi używać formatu ścieżki MSSQLSERVER/{targetDatabaseName} logicznej.
POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/locations/{secondaryRegion}/backupCrossRegionRestore?api-version=2023-01-15
{
"crossRegionRestoreAccessDetails": {
"objectType": "WorkloadCrrAccessToken",
"accessTokenString": "<access-token-string>",
"recoveryPointId": "DefaultRangeRecoveryPoint",
"datasourceType": "SQLDataBase",
"datasourceName": "{databaseName}"
},
"restoreRequest": {
"objectType": "AzureWorkloadSQLPointInTimeRestoreRequest",
"shouldUseAlternateTargetLocation": true,
"recoveryMode": "SnapshotAttachAndRecover",
"isNonRecoverable": false,
"recoveryType": "AlternateLocation",
"sourceResourceId": "/subscriptions/{subscriptionId}/resourceGroups/{sourceVmResourceGroup}/providers/Microsoft.Compute/virtualMachines/{sourceVmName}",
"targetVirtualMachineId": "/subscriptions/{subscriptionId}/resourceGroups/{targetVmResourceGroup}/providers/Microsoft.Compute/virtualMachines/{targetVmName}",
"targetResourceGroupName": "{targetVmResourceGroup}",
"pointInTime": "2026-08-03T06:58:26Z",
"alternateDirectoryPaths": [
{
"mappingType": "DiskDrives",
"sourcePath": "F:\\",
"targetPath": "J:\\"
},
{
"mappingType": "DiskDrives",
"sourcePath": "G:\\",
"targetPath": "K:\\"
}
],
"targetInfo": {
"containerId": "/subscriptions/{subscriptionId}/resourceGroups/{targetVaultResourceGroup}/providers/Microsoft.RecoveryServices/vaults/{targetVaultName}/backupFabrics/Azure/protectionContainers/{targetContainerName}",
"overwriteOption": "FailOnConflict",
"databaseName": "MSSQLSERVER/{targetDatabaseName}"
},
"userAssignedManagedIdentityDetails": {
"identityArmId": "/subscriptions/{subscriptionId}/resourceGroups/{identityResourceGroup}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}",
"userAssignedIdentityProperties": {
"clientId": "<managed-identity-client-id>",
"principalId": "<managed-identity-principal-id>"
}
}
}
}
Podobnie jak w przypadku żądania instancji, skopiuj pełny obiekt tokena properties dostępu do crossRegionRestoreAccessDetails. Traktuj accessTokenString i tokenExtendedInformation jak sekrety i nie zapisuj ich w logach ani nie włączaj do wspólnych artefaktów.
W obu scenariuszach odnoszących się do konkretnego momentu w czasie wyzwalacz jest asynchroniczny. Postępuj zgodnie z nagłówkami odpowiedzi Azure-AsyncOperation, Location i Retry-After oraz sprawdź stan końcowy powstałego zadania skarbca Recovery Services przed uznaniem przywracania za pomyślne.
Dalsze kroki
Zarządzanie bazami danych programu SQL Server na maszynach wirtualnych platformy Azure przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure, interfejsu API REST.
Aby uzyskać więcej informacji na temat interfejsów API REST usługi Azure Backup, zobacz następujące dokumenty: