Kopiowanie transakcyjnie spójnej kopii bazy danych w usłudze Azure SQL Database
Dotyczy: Azure SQL Database
Usługa Azure SQL Database udostępnia kilka metod tworzenia kopii istniejącej bazy danych na tym samym serwerze lub innym serwerze. Bazę danych można skopiować przy użyciu witryny Azure Portal, programu PowerShell, interfejsu wiersza polecenia platformy Azure lub języka Transact-SQL.
Uwaga
Microsoft Entra ID był wcześniej znany jako Azure Active Directory (Azure AD).
Omówienie
Kopia bazy danych jest transakcyjnie spójną migawką źródłowej bazy danych w momencie zainicjowania żądania kopiowania. Możesz wybrać ten sam serwer lub inny serwer dla kopii. Możesz również zachować nadmiarowość kopii zapasowych i rozmiar obliczeniowy źródłowej bazy danych lub użyć innej nadmiarowości magazynu kopii zapasowych i/lub rozmiaru obliczeniowego w ramach tej samej warstwy usługi. Istnieje również możliwość skopiowania bazy danych w warstwie usługi Standardowa do warstwy Standardowa lub Ogólnego przeznaczenia oraz bazy danych w warstwie Usługi Premium do warstwy Premium lub Krytyczne dla działania firmy.
Po zakończeniu kopiowania nowa baza danych jest w pełni funkcjonalną i niezależną bazą danych źródłowej bazy danych. Zarządzanie danymi logowania, użytkownikami i uprawnieniami w skopiowanej bazie danych odbywa się niezależnie od źródłowej bazy danych. Kopia jest tworzona przy użyciu technologii replikacji geograficznej. Po zakończeniu rozmieszczania repliki połączenie replikacji geograficznej zostaje przerwane. Wszystkie wymagania dotyczące korzystania z replikacji geograficznej dotyczą również operacji kopiowania bazy danych. Aby uzyskać szczegółowe informacje, zobacz Omówienie aktywnej replikacji geograficznej.
Uwaga
Witryna Azure Portal, program PowerShell i interfejs wiersza polecenia platformy Azure nie obsługują kopiowania bazy danych do innej subskrypcji.
Kopiowanie bazy danych dla baz danych w warstwie Hiperskala
W przypadku baz danych w warstwie usługi Hiperskala docelowa baza danych określa, czy kopia jest szybką kopią, czy kopią o rozmiarze danych:
Szybka kopia: po zakończeniu kopiowania w tym samym regionie co źródło kopia jest tworzona na podstawie migawek obiektów blob, ta kopia jest szybką operacją niezależnie od rozmiaru bazy danych.
Kopiowanie rozmiaru danych: jeśli docelowa baza danych znajduje się w innym regionie niż źródło lub jeśli nadmiarowość magazynu kopii zapasowej bazy danych (lokalna, strefowa, geograficzna) różni się od źródłowej bazy danych, operacja kopiowania jest operacją rozmiaru danych. Czas kopiowania nie jest bezpośrednio proporcjonalny do rozmiaru, ponieważ obiekty blob serwera stronicowania są kopiowane równolegle.
Identyfikatory logowania w kopii bazy danych
Podczas kopiowania bazy danych na ten sam serwer te same identyfikatory logowania mogą być używane w obu bazach danych. Podmiot zabezpieczeń używany do kopiowania bazy danych staje się właścicielem bazy danych w nowej bazie danych.
Gdy skopiujesz bazę danych na inny serwer, podmiot zabezpieczeń, który zainicjował operację kopiowania na serwerze docelowym, staje się właścicielem nowej bazy danych.
Niezależnie od serwera docelowego wszyscy użytkownicy bazy danych, uprawnienia i identyfikatory zabezpieczeń (SID) są kopiowane do kopii bazy danych. Użycie użytkowników zawartej bazy danych w celu uzyskania dostępu do danych gwarantuje, że skopiowana baza danych ma te same poświadczenia użytkownika, dzięki czemu po zakończeniu kopiowania można natychmiast uzyskać do niej dostęp przy użyciu tych samych poświadczeń.
Jeśli do uzyskiwania dostępu do danych i kopiowania bazy danych na inny serwer używasz danych logowania na poziomie serwera, dostęp z wykorzystaniem danych logowania może nie zadziałać. Może się tak zdarzyć, ponieważ identyfikatory logowania nie istnieją na serwerze docelowym lub te hasła i identyfikatory zabezpieczeń (SID) są różne. Aby uzyskać więcej informacji na temat zarządzania identyfikatorami logowania podczas kopiowania bazy danych na inny serwer, zobacz Jak zarządzać zabezpieczeniami usługi Azure SQL Database po odzyskiwaniu po awarii. Po pomyślnym zakończeniu operacji kopiowania na innym serwerze i przed ponownym mapowaniu innych użytkowników tylko identyfikator logowania skojarzony z właścicielem bazy danych lub administrator serwera może zalogować się do skopiowanej bazy danych. Aby rozwiązać problemy z logowaniem i ustanowić dostęp do danych po zakończeniu operacji kopiowania, zobacz Rozwiązywanie problemów z logowaniem.
Kopiowanie za pomocą witryny Azure Portal
Aby skopiować bazę danych przy użyciu witryny Azure Portal, otwórz stronę bazy danych, a następnie wybierz pozycję Kopiuj , aby otworzyć stronę Tworzenie bazy danych SQL Database — kopiowanie bazy danych . Wypełnij wartości serwera docelowego, do którego chcesz skopiować bazę danych.
Kopiowanie bazy danych
Bazę danych można skopiować przy użyciu programu PowerShell, interfejsu wiersza polecenia platformy Azure i języka Transact-SQL (T-SQL).
W przypadku programu PowerShell użyj polecenia cmdlet New-AzSqlDatabaseCopy .
Ważne
Moduł Azure Resource Manager (RM) programu PowerShell jest nadal obsługiwany przez usługę Azure SQL Database, ale wszystkie przyszłe programowanie dotyczy modułu Az.Sql. Moduł AzureRM będzie nadal otrzymywać poprawki błędów do co najmniej grudnia 2020 r. Argumenty poleceń w module Az i modułach AzureRm są zasadniczo identyczne. Aby uzyskać więcej informacji na temat ich zgodności, zobacz Wprowadzenie do nowego modułu Az programu Azure PowerShell.
New-AzSqlDatabaseCopy -ResourceGroupName "<resourceGroup>" -ServerName $sourceserver -DatabaseName "<databaseName>" `
-CopyResourceGroupName "myResourceGroup" -CopyServerName $targetserver -CopyDatabaseName "CopyOfMySampleDatabase"
Kopia bazy danych jest operacją asynchroniczną, ale docelowa baza danych jest tworzona natychmiast po zaakceptowaniu żądania. Jeśli musisz anulować operację kopiowania w toku, usuń docelową bazę danych przy użyciu polecenia cmdlet Remove-AzSqlDatabase .
Aby uzyskać pełny przykładowy skrypt programu PowerShell, zobacz Kopiowanie bazy danych na nowy serwer.
Monitorowanie postępu operacji kopiowania
Monitoruj proces kopiowania, wykonując zapytania dotyczące widoków sys.databases, sys.dm_database_copies i sys.dm_operation_status . Gdy kopiowanie jest w toku, kolumna state_desc
sys.databases
widoku dla nowej bazy danych jest ustawiona na COPYING
wartość .
- Jeśli kopiowanie zakończy się niepowodzeniem, kolumna
state_desc
sys.databases
widoku dla nowej bazy danych jest ustawiona naSUSPECT
wartość . Wykonaj instrukcję DROP w nowej bazie danych i spróbuj ponownie później. - Jeśli kopiowanie zakończy się pomyślnie,
state_desc
kolumnasys.databases
widoku dla nowej bazy danych jest ustawiona naONLINE
wartość . Kopiowanie zostało ukończone, a nowa baza danych jest zwykłą bazą danych, którą można zmienić niezależnie od źródłowej bazy danych.
Uwaga
Jeśli zdecydujesz się anulować kopiowanie w toku, wykonaj instrukcję DROP DATABASE w nowej bazie danych.
Ważne
Jeśli musisz utworzyć kopię z znacznie mniejszym celem usługi niż źródło, docelowa baza danych może nie mieć wystarczających zasobów do ukończenia procesu rozmieszczania i może spowodować niepowodzenie operacji kopiowania. W tym scenariuszu użyj żądania przywracania geograficznego, aby utworzyć kopię na innym serwerze i/lub w innym regionie. Aby uzyskać więcej informacji, zobacz Odzyskiwanie bazy danych Azure SQL Database przy użyciu kopii zapasowych bazy danych.
Uprawnienia
Aby utworzyć kopię bazy danych, musisz mieć następujące role:
- Właściciel subskrypcji lub
- Rola współautora programu SQL Server lub
- Rola niestandardowa na serwerze źródłowym z następującymi uprawnieniami:
- Microsoft.Sql/servers/databases/read
- Microsoft.Sql/servers/databases/write i
- Rola niestandardowa na serwerze docelowym z następującymi uprawnieniami:
- Microsoft.Sql/servers/read
- Microsoft.Sql/servers/databases/read
- Microsoft.Sql/servers/databases/write
Aby anulować kopię bazy danych, musisz mieć następujące role:
- Właściciel subskrypcji lub
- Rola współautora programu SQL Server lub
- Rola niestandardowa w docelowej bazie danych z następującym uprawnieniem:
- Microsoft.Sql/servers/databases/delete
Do zarządzania kopiowaniem bazy danych przy użyciu witryny Azure Portal potrzebne są również następujące uprawnienia:
- Microsoft.Resources/subscriptions/resources/read
- Microsoft.Resources/deployments/read
- Microsoft.Resources/deployments/write
- Microsoft.Resources/deployments/operationstatuses/read
Jeśli chcesz wyświetlić operacje we wdrożeniach w grupie zasobów w portalu, operacje między wieloma dostawcami zasobów, w tym operacjami SQL, potrzebne są następujące dodatkowe uprawnienia:
- Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read
- Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read
Rozwiązywanie problemów z identyfikatorami logowania
Gdy nowa baza danych jest w trybie online na serwerze docelowym, użyj instrukcji ALTER USER , aby ponownie zamapować użytkowników z nowej bazy danych, aby zalogować się na serwerze docelowym. Aby rozwiązać problemy z oddzielonych użytkownikami, zobacz Rozwiązywanie problemów z oddzielonych użytkowników. Zobacz również Jak zarządzać zabezpieczeniami usługi Azure SQL Database po odzyskiwaniu po awarii.
Wszyscy użytkownicy w nowej bazie danych zachowują uprawnienia, które mieli w źródłowej bazie danych. Użytkownik, który zainicjował kopię bazy danych, staje się właścicielem nowej bazy danych. Po pomyślnym zakończeniu kopiowania i ponownym zamapowaniu innych użytkowników tylko właściciel bazy danych może zalogować się do nowej bazy danych.
Aby dowiedzieć się więcej na temat zarządzania użytkownikami i identyfikatorami logowania podczas kopiowania bazy danych na inny serwer, zobacz Jak zarządzać zabezpieczeniami usługi Azure SQL Database po odzyskiwaniu po awarii.
Błędy kopiowania bazy danych
Podczas kopiowania bazy danych w usłudze Azure SQL Database mogą wystąpić następujące błędy. Więcej informacji znajdziesz w artykule Kopiowanie bazy danych usługi Azure SQL Database.
Kod błędu | Ważność | opis |
---|---|---|
40635 | 16 | Klient z adresem IP „%.*ls” jest tymczasowo wyłączony. |
40637 | 16 | Tworzenie kopii bazy danych jest obecnie wyłączone. |
40561 | 16 | Kopiowanie bazy danych nie powiodło się. Źródłowa lub docelowa baza danych nie istnieje. |
40562 | 16 | Kopiowanie bazy danych nie powiodło się. Źródłowa baza danych została usunięta. |
40563 | 16 | Kopiowanie bazy danych nie powiodło się. Docelowa baza danych została usunięta. |
40564 | 16 | Kopiowanie bazy danych nie powiodło się z powodu błędu wewnętrznego. Porzuć docelową bazę danych i spróbuj ponownie. |
40565 | 16 | Kopiowanie bazy danych nie powiodło się. Dozwolona jest nie więcej niż 1 równoczesna kopia bazy danych z tego samego źródła. Porzuć docelową bazę danych i spróbuj ponownie później. |
40566 | 16 | Kopiowanie bazy danych nie powiodło się z powodu błędu wewnętrznego. Porzuć docelową bazę danych i spróbuj ponownie. |
40567 | 16 | Kopiowanie bazy danych nie powiodło się z powodu błędu wewnętrznego. Porzuć docelową bazę danych i spróbuj ponownie. |
40568 | 16 | Kopiowanie bazy danych nie powiodło się. Źródłowa baza danych stała się niedostępna. Porzuć docelową bazę danych i spróbuj ponownie. |
40569 | 16 | Kopiowanie bazy danych nie powiodło się. Docelowa baza danych stała się niedostępna. Porzuć docelową bazę danych i spróbuj ponownie. |
40570 | 16 | Kopiowanie bazy danych nie powiodło się z powodu błędu wewnętrznego. Porzuć docelową bazę danych i spróbuj ponownie później. |
40571 | 16 | Kopiowanie bazy danych nie powiodło się z powodu błędu wewnętrznego. Porzuć docelową bazę danych i spróbuj ponownie później. |
Powiązana zawartość
- Autoryzowanie dostępu do bazy danych w usługach SQL Database, SQL Managed Instance i Azure Synapse Analytics
- Konfiguracja zabezpieczeń usługi Azure SQL Database i zarządzanie nimi pod kątem przywracania lub trybu failover obszaru geograficznego
- Eksportowanie do pliku BACPAC — usługi Azure SQL Database i Azure SQL Managed Instance