Dela via


Kopiera en transaktionsmässigt konsekvent kopia av en databas i Azure SQL Database

gäller för:Azure SQL Database

Azure SQL Database innehåller flera metoder för att skapa en kopia av en befintlig databas på antingen samma logiska Azure SQL Database-server eller en annan logisk server. Du kan kopiera en databas med hjälp av Azure-portalen, PowerShell, Azure CLI eller Transact-SQL.

Obs

Microsoft Entra ID tidigare kallades Azure Active Directory (Azure AD).

Överblick

En databaskopia är en transaktionsmässigt konsekvent ögonblicksbild av källdatabasen vid den tidpunkt då kopieringsbegäran initieras. Du kan välja samma logiska server eller en annan logisk server för kopian. Du kan också välja att behålla säkerhetskopieringsredundansen och beräkningsstorleken för källdatabasen, eller använda en annan redundans och/eller beräkningsstorlek inom samma tjänstnivå. Det går också att kopiera en databas på tjänstnivån Standard till antingen standard- eller generell användningsnivå och en databas på Premium-tjänstnivån till antingen premium- eller affärskritisk nivå.

När kopian är klar är den nya databasen en fullständigt funktionell och oberoende databas för källdatabasen. Inloggningar, användare och behörigheter i den kopierade databasen hanteras oberoende av källdatabasen. Kopian skapas med hjälp av geo-replikeringsteknik. När replikutsättningen är klar avslutas georeplikeringslänken automatiskt. Alla krav för att använda geo-replikering gäller för databaskopieringsåtgärden. Se Översikt över aktiv geo-replikering för mer information.

Not

Azure-portalen, PowerShell och Azure CLI stöder inte databaskopiering till en annan prenumeration.

Databaskopiering för Hyperskala-databaser

För databaser på tjänstnivån Hyperskalaavgör måldatabasen om kopian är en snabb kopia eller en datastorlekskopia:

  • Snabb kopiering: När kopian görs i samma region som källan skapas kopian från ögonblicksbilderna av blobbar. Den här kopian är en snabb åtgärd oavsett databasstorlek.

  • Storleksberoende datakopiering: När måldatabasen ligger i en annan region än källdatabasen eller om säkerhetskopieringslagringens redundans (lokal, zonindelad, geo) för målet skiljer sig från källdatabasen, är kopieringsåtgärden beroende av datamängden. Kopieringstiden är inte direkt proportionell mot storleken eftersom sidserverblobbar kopieras parallellt.

Inloggningar i databaskopian

När du kopierar en databas till samma logiska server kan samma inloggningar användas på båda databaserna. Säkerhetsobjektet som du använder för att kopiera databasen blir databasägaren för den nya databasen.

När du kopierar en databas till en annan logisk server blir säkerhetsobjektet som initierade kopieringsåtgärden på den logiska målservern ägare till den nya databasen.

Oavsett målserver kopieras alla databasanvändare, behörigheter och säkerhetsidentifierare (SID) till databaskopian. Om du använder oberoende databasanvändare för dataåtkomst ser du till att den kopierade databasen har samma användarautentiseringsuppgifter, så att du omedelbart kan komma åt den med samma autentiseringsuppgifter när kopieringen är klar.

Om du använder inloggningar på servernivå för dataåtkomst och kopierar databasen till en annan server kanske den inloggningsbaserade åtkomsten inte fungerar. Detta kan inträffa eftersom inloggningarna inte finns på den logiska målservern, eller på grund av att dessa lösenord och säkerhetsidentifierare (SID) skiljer sig åt. Mer information om hur du hanterar inloggningar när du kopierar en databas till en annan server finns i Konfigurera och hantera Azure SQL Database-säkerhet för geo-återställning eller redundans. När kopieringsåtgärden till en annan logisk server har slutförts och innan andra användare mappas om kan endast inloggningen som är associerad med databasägaren eller serveradministratören logga in på den kopierade databasen. Information om hur du löser inloggningar och upprättar dataåtkomst när kopieringen har slutförts finns i Lösa inloggningar.

Kopiera med Hjälp av Azure-portalen

Om du vill kopiera en databas med hjälp av Azure-portalen öppnar du sidan för databasen och väljer sedan Kopiera för att öppna sidan Skapa SQL Database – Kopiera databas. Fyll i värdena för den logiska målserver som du vill kopiera databasen till.

Skärmbild av Azure-portalen med alternativet Databaskopiering markerat på databasöversiktssidan.

Kopiera en databas

Du kan kopiera en databas med hjälp av PowerShell, Azure CLI och Transact-SQL (T-SQL).

För PowerShell använder du cmdleten New-AzSqlDatabaseCopy.

Viktig

Modulen PowerShell Azure Resource Manager (RM) stöds fortfarande av Azure SQL Database, men all framtida utveckling gäller för Az.Sql-modulen. AzureRM-modulen fortsätter att ta emot felkorrigeringar fram till åtminstone december 2020. Argumenten för kommandona i Az-modulen och i AzureRm-modulerna är väsentligen identiska. Mer information om deras kompatibilitet finns i Introduktion till den nya Azure PowerShell Az-modulen.

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

Databaskopian är en asynkron åtgärd, men måldatabasen skapas omedelbart efter att begäran har godkänts. Om du behöver avbryta kopieringsåtgärden medan den fortfarande pågår släpper du måldatabasen med hjälp av cmdleten Remove-AzSqlDatabase.

Ett fullständigt PowerShell-exempelskript finns i Använda PowerShell för att kopiera en databas till en ny logisk server.

Övervaka förloppet för kopieringsåtgärden

Övervaka kopieringsprocessen genom att fråga sys.databases, sys.dm_database_copiesoch sys.dm_operation_status vyer. Medan kopieringen pågår är kolumnen state_desc i vyn sys.databases för den nya databasen inställd på COPYING.

  • Om kopieringen misslyckas kommer kolumnen state_desc i sys.databases för den nya databasen att vara inställd på SUSPECT. Kör DROP-instruktionen på den nya databasen och försök igen senare.
  • Om kopieringen lyckas är kolumn state_desc i vyn sys.databases för den nya databasen inställd på ONLINE. Kopieringen är klar och den nya databasen är en vanlig databas som kan ändras oberoende av källdatabasen.

Notis

Om du bestämmer dig för att avbryta kopieringen medan den pågår kör du instruktionen DROP DATABASE på den nya databasen.

Viktig

Om du behöver skapa en kopia med ett betydligt mindre tjänstmål än källan kanske måldatabasen inte har tillräckligt med resurser för att slutföra seeding-processen och det kan leda till att kopieringsåtgärden misslyckas. I det här scenariot använder du en geo-återställningsbegäran för att skapa en kopia på en annan logisk server och/eller en annan region. Mer information finns i Återställa en Azure SQL Database med hjälp av databassäkerhetskopior.

Behörigheter

Om du vill skapa en databaskopia måste du ha följande roller:

  • Prenumerationsägare eller
  • SQL Server-deltagarroll eller
  • Anpassad roll på den logiska källservern med följande behörigheter:
    • Microsoft.Sql/servers/databases/read
    • Microsoft.Sql/servers/databases/write och
  • Anpassad roll på den logiska målservern med följande behörigheter:
    • Microsoft.Sql/servers/read
    • Microsoft.Sql/servers/databases/read
    • Microsoft.Sql/servers/databases/write

Om du vill avbryta en databaskopia måste du ha följande roller:

  • Prenumerationsägare eller
  • SQL Server-deltagarroll eller
  • Anpassad roll i måldatabasen med följande behörighet:
    • Microsoft.Sql/servers/databases/delete

Om du vill hantera databaskopiering med Hjälp av Azure-portalen behöver du även följande behörigheter:

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

Om du vill se åtgärderna under distributioner i resursgruppen på portalen, åtgärder mellan flera resursprovidrar, inklusive SQL-åtgärder, behöver du följande ytterligare behörigheter:

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

Lösa inloggningar

När den nya databasen är online på den logiska målservern använder du instruktionen ALTER USER för att mappa om användarna från den nya databasen till inloggningar på den logiska målservern. Information om hur du löser överblivna användare finns i Felsöka överblivna användare. Se även Konfigurera och hantera Azure SQL Database-säkerhet för geoåterställning eller failover.

Alla användare i den nya databasen behåller de behörigheter som de hade i källdatabasen. Användaren som initierade databaskopian blir databasägaren för den nya databasen. När kopieringen har slutförts och innan andra användare mappas om kan endast databasägaren logga in på den nya databasen.

Mer information om hur du hanterar användare och inloggningar när du kopierar en databas till en annan logisk server finns i Konfigurera och hantera Azure SQL Database-säkerhet för geo-återställning eller redundans.

Fel vid databaskopiering

Följande fel kan uppstå vid kopiering av en databas i Azure SQL Database. Mer information finns i Kopiera en transaktionsmässigt konsekvent kopia av en databas i Azure SQL Database.

Felkod Stränghet Beskrivning
40635 16 Klienten med IP-adressen%.*ls är tillfälligt inaktiverad.
40637 16 Skapa databaskopiering är för närvarande inaktiverat.
40561 16 Det gick inte att kopiera databasen. Käll- eller måldatabasen finns inte.
40562 16 Det gick inte att kopiera databasen. Källdatabasen har tagits bort.
40563 16 Det gick inte att kopiera databasen. Måldatabasen har tagits bort.
40564 16 Databaskopian misslyckades på grund av ett internt fel. Ta bort måldatabasen och försök igen.
40565 16 Det gick inte att kopiera databasen. Högst 1 samtidig databaskopiering från samma källa tillåts. Ta bort måldatabasen och försök igen senare.
40566 16 Databaskopian misslyckades på grund av ett internt fel. Ta bort måldatabasen och försök igen.
40567 16 Databaskopian misslyckades på grund av ett internt fel. Ta bort måldatabasen och försök igen.
40568 16 Det gick inte att kopiera databasen. Källdatabasen har blivit otillgänglig. Ta bort måldatabasen och försök igen.
40569 16 Det gick inte att kopiera databasen. Måldatabasen har blivit otillgänglig. Ta bort måldatabasen och försök igen.
40570 16 Databaskopian misslyckades på grund av ett internt fel. Ta bort måldatabasen och försök igen senare.
40571 16 Databaskopian misslyckades på grund av ett internt fel. Ta bort måldatabasen och försök igen senare.