Kopírování transakční konzistentní kopie databáze ve službě Azure SQL Database

Platí pro: Azure SQL Database

Azure SQL Database poskytuje několik metod pro vytvoření kopie existující databáze na stejném serveru nebo jiném serveru. Databázi můžete zkopírovat pomocí webu Azure Portal, PowerShellu, Azure CLI nebo Jazyka Transact-SQL.

Poznámka:

ID Microsoft Entra se dříve označovalo jako Azure Active Directory (Azure AD).

Přehled

Kopie databáze je transakční konzistentní snímek zdrojové databáze v okamžiku, kdy je inicializován požadavek na kopírování. Pro kopii můžete vybrat stejný server nebo jiný server. Můžete také zvolit, jestli chcete zachovat redundanci zálohování a velikost výpočetních prostředků zdrojové databáze, nebo použít jinou redundanci úložiště zálohování nebo velikost výpočetních prostředků ve stejné úrovni služby. Databázi na úrovni služby Standard je také možné zkopírovat na úroveň Standard nebo Pro obecné účely a databázi v úrovni služby Premium na úroveň Premium nebo Pro důležité obchodní informace.

Po dokončení kopírování je nová databáze plně funkční a nezávislá databáze pro zdrojovou databázi. Přihlašovací údaje, uživatelé a oprávnění v kopírované databázi jsou spravovány nezávisle na zdrojové databázi. Kopie se vytvoří pomocí technologie geografické replikace. Po dokončení počáteční repliky se připojení geografické replikace automaticky ukončí. Všechny požadavky pro používání geografické replikace se vztahují i na operaci kopírování databáze. Podrobnosti najdete v přehledu aktivní geografické replikace.

Poznámka:

Azure Portal, PowerShell a Azure CLI nepodporují kopírování databáze do jiného předplatného.

Kopírování databáze pro databáze Hyperscale

U databází na úrovni služby Hyperscale cílová databáze určuje, jestli je kopie rychlá kopie, nebo kopírování velikosti dat:

  • Rychlé kopírování: Po dokončení kopírování ve stejné oblasti jako zdroj se kopie vytvoří ze snímků objektů blob, tato kopie je rychlá operace bez ohledu na velikost databáze.

  • Kopie velikosti dat: Pokud je cílová databáze v jiné oblasti než zdroj nebo pokud se redundance úložiště záloh databáze (místní, zónová, geografická) od cíle liší, operace kopírování je operace kopírování operace velikost dat. Doba kopírování není přímo úměrná velikosti, protože objekty blob serveru stránky se kopírují paralelně.

Přihlášení v kopii databáze

Při kopírování databáze na stejný server je možné použít stejná přihlášení v obou databázích. Objekt zabezpečení, který použijete ke kopírování databáze, se stane vlastníkem databáze v nové databázi.

Při kopírování databáze na jiný server se objekt zabezpečení, který inicioval operaci kopírování na cílovém serveru, stává vlastníkem nové databáze.

Bez ohledu na cílový server se všichni uživatelé databáze, oprávnění a identifikátory zabezpečení (SID) zkopírují do kopie databáze. Použití uživatelů databáze s omezením pro přístup k datům zajistí, že zkopírovaná databáze bude mít stejné přihlašovací údaje uživatele, takže po dokončení kopie budete mít okamžitý přístup se stejnými přihlašovacími údaji.

Pokud používáte pro přístup k datům přihlášení na úrovni serveru a kopírujete databázi na jiný server, nemusí přístup založený na přihlášení fungovat. K tomu může dojít, protože přihlášení na cílovém serveru neexistují, nebo protože tato hesla a identifikátory zabezpečení (SID) se liší. Další informace o správě přihlášení při kopírování databáze na jiný server naleznete v tématu Správa zabezpečení služby Azure SQL Database po zotavení po havárii. Po úspěšném dokončení operace kopírování na jiný server a před opětovným namapování jiných uživatelů se k zkopírované databázi může přihlásit pouze přihlášení přidružené k vlastníkovi databáze nebo se správce serveru může přihlásit ke zkopírované databázi. Pokud chcete po dokončení operace kopírování vyřešit přihlášení a vytvořit přístup k datům, přečtěte si téma Řešení přihlášení.

Kopírování s použitím webu Azure Portal

Pokud chcete zkopírovat databázi pomocí webu Azure Portal, otevřete stránku databáze a pak zvolte Kopírovat , aby se otevřela stránka Vytvořit databázi SQL – Kopírování databáze . Vyplňte hodnoty cílového serveru, do kterého chcete databázi zkopírovat.

Snímek obrazovky webu Azure Portal se zvýrazněnou možností kopírování databáze na stránce přehledu databáze

Kopírování databáze

Databázi můžete zkopírovat pomocí PowerShellu, Azure CLI a Jazyka Transact-SQL (T-SQL).

Pro PowerShell použijte rutinu New-AzSqlDatabaseCopy .

Důležité

Azure SQL Database stále podporuje modul Azure Resource Manageru (RM), ale veškerý budoucí vývoj je určený pro modul Az.Sql. Modul AzureRM bude dál dostávat opravy chyb až do alespoň prosince 2020. Argumenty pro příkazy v modulu Az a v modulech AzureRm jsou podstatně identické. Další informace o jejich kompatibilitě najdete v tématu Představení nového modulu Az Azure PowerShellu.

New-AzSqlDatabaseCopy -ResourceGroupName "<resourceGroup>" -ServerName $sourceserver -DatabaseName "<databaseName>" `
    -CopyResourceGroupName "myResourceGroup" -CopyServerName $targetserver -CopyDatabaseName "CopyOfMySampleDatabase"

Kopie databáze je asynchronní operace, ale cílová databáze se vytvoří okamžitě po přijetí požadavku. Pokud potřebujete operaci kopírování zrušit, i když stále probíhá, odstraňte cílovou databázi pomocí rutiny Remove-AzSqlDatabase .

Úplný ukázkový skript PowerShellu najdete v tématu Kopírování databáze na nový server.

Monitorování průběhu operace kopírování

Sledujte proces kopírování dotazováním zobrazení sys.databases, sys.dm_database_copies a sys.dm_operation_status . Zatímco probíhá kopírování, state_desc sloupec sys.databases zobrazení nové databáze je nastaven na COPYINGhodnotu .

  • Pokud kopírování selže, state_desc nastaví se sloupec sys.databases zobrazení nové databáze na SUSPECThodnotu . Spusťte příkaz DROP v nové databázi a zkuste to znovu později.
  • Pokud kopírování proběhne úspěšně, state_desc nastaví se sloupec sys.databases zobrazení nové databáze na ONLINEhodnotu . Kopírování je hotové a nová databáze je běžná databáze, kterou je možné změnit nezávisle na zdrojové databázi.

Poznámka:

Pokud se rozhodnete zrušit kopírování, zatímco probíhá, spusťte v nové databázi příkaz DROP DATABASE .

Důležité

Pokud potřebujete vytvořit kopii s podstatně menším cílem služby než zdroj, nemusí mít cílová databáze dostatek prostředků k dokončení procesu počátečního zpracování a může způsobit selhání operace kopírování. V tomto scénáři použijte žádost o geografické obnovení k vytvoření kopie na jiném serveru nebo jiné oblasti. Další informace najdete v tématu Obnovení služby Azure SQL Database pomocí záloh databází.

Oprávnění

Pokud chcete vytvořit kopii databáze, musíte být v následujících rolích:

  • Vlastník předplatného nebo
  • Role přispěvatele SQL Serveru nebo
  • Vlastní role na zdrojovém serveru s následujícími oprávněními:
    • Microsoft.Sql/servers/databases/read
    • Microsoft.Sql/servers/databases/write a
  • Vlastní role na cílovém serveru s následujícími oprávněními:
    • Microsoft.Sql/servers/read
    • Microsoft.Sql/servers/databases/read
    • Microsoft.Sql/servers/databases/write

Pokud chcete zrušit kopii databáze, musíte být v následujících rolích:

  • Vlastník předplatného nebo
  • Role přispěvatele SQL Serveru nebo
  • Vlastní role v cílové databázi s následujícím oprávněním:
    • Microsoft.Sql/servers/databases/delete

Ke správě kopírování databáze pomocí webu Azure Portal potřebujete také následující oprávnění:

  • Microsoft.Resources/subscriptions/resources/read
  • Microsoft.Resources/deployments/read
  • Microsoft.Resources/deployments/write
  • Microsoft.Resources/deployments/operationstatuses/read

Pokud chcete zobrazit operace v rámci nasazení ve skupině prostředků na portálu, operace napříč několika poskytovateli prostředků, včetně operací SQL, potřebujete tato další oprávnění:

  • Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read
  • Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read

Řešení problémů s přihlášeními

Jakmile bude nová databáze na cílovém serveru online, použijte příkaz ALTER USER k přemapování uživatelů z nové databáze na přihlášení na cílovém serveru. Pokud chcete vyřešit osamocené uživatele, přečtěte si téma Řešení potíží se osamocenými uživateli. Viz také Postup správy zabezpečení služby Azure SQL Database po zotavení po havárii.

Všichni uživatelé v nové databázi si zachovají oprávnění, která měli ve zdrojové databázi. Uživatel, který spustil kopii databáze, se stane vlastníkem databáze nové databáze. Po úspěšném kopírování a před opětovným namapováním jiných uživatelů se k nové databázi může přihlásit jenom vlastník databáze.

Informace o správě uživatelů a přihlášení při kopírování databáze na jiný server najdete v tématu Správa zabezpečení služby Azure SQL Database po zotavení po havárii.

Chyby kopírování databáze

Při kopírování databáze v Azure SQL Database může docházet k následujícím chybám. Další informace najdete v tématu Kopírování databáze služby Azure SQL Database.

Kód chyby Závažnost Popis
40635 16 Klient s IP adresou %.*ls je dočasně zakázaný.
40637 16 Vytvoření kopie databáze je momentálně zakázáno.
40561 16 Kopírování databáze selhalo. Zdrojová nebo cílová databáze neexistuje.
40562 16 Kopírování databáze selhalo. Zdrojová databáze byla vyřazena.
40563 16 Kopírování databáze selhalo. Cílová databáze byla vyřazena.
40564 16 Kopírování databáze selhalo kvůli vnitřní chybě. Zahoďte cílovou databázi a zkuste to znovu.
40565 16 Kopírování databáze selhalo. Není povoleno více než 1 souběžné kopírování databáze ze stejného zdroje. Zahoďte cílovou databázi a zkuste to znovu později.
40566 16 Kopírování databáze selhalo kvůli vnitřní chybě. Zahoďte cílovou databázi a zkuste to znovu.
40567 16 Kopírování databáze selhalo kvůli vnitřní chybě. Zahoďte cílovou databázi a zkuste to znovu.
40568 16 Kopírování databáze selhalo. Zdrojová databáze začala být nedostupná. Zahoďte cílovou databázi a zkuste to znovu.
40569 16 Kopírování databáze selhalo. Cílová databáze začala být nedostupná. Zahoďte cílovou databázi a zkuste to znovu.
40570 16 Kopírování databáze selhalo kvůli vnitřní chybě. Zahoďte cílovou databázi a zkuste to znovu později.
40571 16 Kopírování databáze selhalo kvůli vnitřní chybě. Zahoďte cílovou databázi a zkuste to znovu později.