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.
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
isys.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 vynsys.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. |