Delen via


Een transactioneel consistente kopie van een database kopiëren in Azure SQL Database

van toepassing op:Azure SQL Database-

Azure SQL Database biedt verschillende methoden voor het maken van een kopie van een bestaande -database op dezelfde logische server van Azure SQL Database of een andere logische server. U kunt een database kopiëren met behulp van Azure Portal, PowerShell, Azure CLI of Transact-SQL.

Notitie

Microsoft Entra ID voorheen Azure Active Directory (Azure AD) werd genoemd.

Overzicht

Een databasekopie is een transactioneel consistente momentopname van de brondatabase op het moment waarop de kopieeraanvraag wordt gestart. U kunt dezelfde logische server of een andere logische server voor de kopie selecteren. U kunt er ook voor kiezen om de back-upopslagredundantie en rekenkrachtgrootte van de brondatabase te behouden, of een andere back-upopslagredundantie en/of rekenkrachtgrootte binnen dezelfde servicelaag te gebruiken. Het is ook mogelijk om een database in de Standard-servicelaag te kopiëren naar de laag Standard of Algemeen gebruik en een database in de Premium-servicelaag naar de laag Premium of Bedrijfskritiek.

Nadat het kopiëren is voltooid, is de nieuwe database een volledig functionele en onafhankelijke database naar de brondatabase. De aanmeldingen, gebruikers en machtigingen in de gekopieerde database worden onafhankelijk van de brondatabase beheerd. De kopie wordt gemaakt met behulp van geo-replicatietechnologie. Zodra het seeden van replica's is voltooid, wordt de geo-replicatiekoppeling automatisch beëindigd. Alle vereisten voor het gebruik van geo-replicatie zijn van toepassing op de databasekopiebewerking. Zie Overzicht van actieve geo-replicatie voor meer informatie.

Notitie

De Azure Portal, PowerShell en de Azure CLI bieden geen ondersteuning voor databasekopie naar een ander abonnement.

Databasekopie voor Hyperscale-databases

Voor databases in de Hyperscale-servicelaagbepaalt de doeldatabase of de kopie een snelle kopie of een datagrootte kopie is.

  • Snelle kopie: wanneer de kopie wordt uitgevoerd in dezelfde regio als de bron, wordt de kopie gemaakt op basis van de momentopnamen van blobs, is deze kopie een snelle bewerking, ongeacht de grootte van de database.

  • grootte van gegevens kopiëren: wanneer de doeldatabase zich in een andere regio bevindt dan de bron of als de redundantie van de databaseback-upopslag (lokaal, zonegebonden, geo) van het doel verschilt van de brondatabase, is de kopieerbewerking een grootte van de gegevensbewerking. De kopieertijd is niet rechtstreeks evenredig met de grootte, omdat paginaserver-blobs parallel worden gekopieerd.

Aanmeldingen in de databasekopie

Wanneer u een database naar dezelfde logische server kopieert, kunnen dezelfde aanmeldingen op beide databases worden gebruikt. De beveiligingsprincipaal die u gebruikt om de database te kopiëren, wordt de eigenaar van de database in de nieuwe database.

Wanneer u een database naar een andere logische server kopieert, wordt de beveiligingsprincipaal die de kopieerbewerking op de logische doelserver heeft gestart, de eigenaar van de nieuwe database.

Ongeacht de doelserver worden alle databasegebruikers, machtigingen en beveiligings-id's (SID's) gekopieerd naar de databasekopie. Als u ingesloten databasegebruikers gebruikt voor gegevenstoegang, zorgt u ervoor dat de gekopieerde database dezelfde gebruikersreferenties heeft, zodat nadat de kopie is voltooid, u deze onmiddellijk met dezelfde referenties kunt openen.

Als u aanmeldingen op serverniveau gebruikt voor gegevenstoegang en de database naar een andere server kopieert, werkt de toegang op basis van aanmelding mogelijk niet. Dit kan gebeuren omdat de aanmeldingen niet bestaan op de logische doelserver of omdat deze wachtwoorden en beveiligings-id's (SID's) verschillend zijn. Zie Azure SQL Database-beveiliging configureren en beheren voor geo-herstel of failovervoor meer informatie over het beheren van aanmeldingen wanneer u een database naar een andere server kopieert. Nadat de kopieerbewerking naar een andere logische server succesvol is voltooid en voordat andere gebruikers opnieuw worden toegewezen, kan alleen de aanmelding gekoppeld aan de database-eigenaar of de serverbeheerder zich aanmelden bij de gekopieerde database. Zie Aanmeldingen oplossenom aanmeldingen op te lossen en gegevenstoegang tot stand te brengen nadat de kopieerbewerking is voltooid.

Kopiëren met behulp van Azure Portal

Als u een database wilt kopiëren met behulp van Azure Portal, opent u de pagina voor uw database en kiest u vervolgens Kopiëren om de pagina SQL Database maken - Database kopiëren - Database kopiëren te openen. Vul de waarden in voor de logische doelserver waarnaar u de database wilt kopiëren.

Schermopname van Azure Portal met de optie Database kopiëren gemarkeerd op de overzichtspagina van de database.

Een database kopiëren

U kunt een database kopiëren met behulp van PowerShell, de Azure CLI en Transact-SQL (T-SQL).

Gebruik voor PowerShell de cmdlet New-AzSqlDatabaseCopy.

Belangrijk

De Module PowerShell Azure Resource Manager (RM) wordt nog steeds ondersteund door Azure SQL Database, maar alle toekomstige ontwikkeling is voor de Az.Sql-module. De AzureRM-module blijft tot ten minste december 2020 bugfixes ontvangen. De argumenten voor de opdrachten in de Az-module en in de AzureRm-modules zijn aanzienlijk identiek. Zie Introductie van de nieuwe Azure PowerShell Az-modulevoor meer informatie over de compatibiliteit.

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

De databasekopie is een asynchrone bewerking, maar de doeldatabase wordt onmiddellijk nadat de aanvraag is geaccepteerd gemaakt. Als u de kopieerbewerking wilt annuleren terwijl deze nog wordt uitgevoerd, verwijdert u de doeldatabase met behulp van de cmdlet Remove-AzSqlDatabase.

Zie PowerShell gebruiken om een database te kopiëren naar een nieuwe logische servervoor een volledig PowerShell-voorbeeldscript.

Voortgang van de kopieerbewerking controleren

Bewaak het kopieerproces door een query uit te voeren op de sys.databases, sys.dm_database_copiesen sys.dm_operation_status weergaven. Terwijl het kopiëren wordt uitgevoerd, wordt de kolom state_desc van de sys.databases weergave voor de nieuwe database ingesteld op COPYING.

  • Als het kopiëren mislukt, wordt de kolom state_desc van de sys.databases weergave voor de nieuwe database ingesteld op SUSPECT. Voer de DROP-instructie uit op de nieuwe database en probeer het later opnieuw.
  • Als het kopiëren slaagt, wordt de kolom state_desc van de sys.databases weergave voor de nieuwe database ingesteld op ONLINE. Het kopiëren is voltooid en de nieuwe database is een gewone database die onafhankelijk van de brondatabase kan worden gewijzigd.

Notitie

Als u besluit het kopiëren te annuleren terwijl het wordt uitgevoerd, voert u de DROP DATABASE-instructie uit voor de nieuwe database.

Belangrijk

Als u een kopie wilt maken met een aanzienlijk kleinere servicedoelstelling dan de bron, beschikt de doeldatabase mogelijk niet over voldoende resources om het seedingproces te voltooien en kan de kopieerbewerking mislukken. In dit scenario gebruikt u een aanvraag voor geo-herstel om een kopie te maken in een andere logische server en/of een andere regio. Zie Een Azure SQL Database herstellen met behulp van databaseback-upsvoor meer informatie.

Machtigingen

Als u een databasekopie wilt maken, moet u de volgende rollen hebben:

  • Abonnementseigenaar of
  • Rol SQL Server-inzender of
  • Aangepaste rol op de logische bronserver met de volgende machtigingen:
    • Microsoft.Sql/servers/databases/read
    • Microsoft.Sql/servers/databases/write en
  • Aangepaste rol op de logische doelserver met de volgende machtigingen:
    • Microsoft.Sql/servers/read
    • Microsoft.Sql/servers/databases/read
    • Microsoft.Sql/servers/databases/write

Als u een databasekopie wilt annuleren, moet u de volgende rollen hebben:

  • Abonnementseigenaar of
  • SQL Server-bijdragerrol of
  • Aangepaste rol in de doeldatabase met de volgende machtiging:
    • Microsoft.Sql/servers/databases/delete

Als u databasekopie wilt beheren met behulp van Azure Portal, hebt u ook de volgende machtigingen nodig:

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

Als u de bewerkingen onder implementaties in de resourcegroep in de portal wilt zien, hebt u deze aanvullende machtigingen nodig voor bewerkingen tussen meerdere resourceproviders, waaronder SQL-bewerkingen:

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

Aanmeldingen oplossen

Nadat de nieuwe database online is op de logische doelserver, gebruikt u de instructie ALTER USER om de gebruikers van de nieuwe database opnieuw toe te kennen aanmeldingen op de logische doelserver. Zie Problemen met zwevende gebruikers oplossenom zwevende gebruikers op te lossen. Zie ook Configureer en beheer Azure SQL Database-beveiliging voor geo-herstel of failover.

Alle gebruikers in de nieuwe database behouden de machtigingen die ze in de brondatabase hadden. De gebruiker die de databasekopie heeft gestart, wordt de eigenaar van de nieuwe database. Nadat het kopiëren is geslaagd en voordat andere gebruikers worden herverdeeld, kan alleen de eigenaar van de database zich aanmelden bij de nieuwe database.

Zie Azure SQL Database-beveiliging configureren en beheren voor geo-herstel of failover-voor meer informatie over het beheren van gebruikers en aanmeldingen wanneer u een database naar een andere logische server kopieert.

Kopieerfouten in de database

De volgende fouten kunnen optreden tijdens het kopiëren van een database in Azure SQL Database. Zie Een transactioneel consistente kopie van een database kopiëren in Azure SQL Databasevoor meer informatie.

Foutcode Ernst Beschrijving
40635 16 Client met IP-adres '%.*ls' is tijdelijk uitgeschakeld.
40637 16 Het maken van een databasekopie is momenteel uitgeschakeld.
40561 16 Het kopiëren van de database is mislukt. De bron- of doeldatabase bestaat niet.
40562 16 Het kopiëren van de database is mislukt. De brondatabase is verwijderd.
40563 16 Het kopiëren van de database is mislukt. De doeldatabase is verwijderd.
40564 16 Het kopiëren van de database is mislukt vanwege een interne fout. Verwijder de doeldatabase en probeer het opnieuw.
40565 16 Het kopiëren van de database is mislukt. Niet meer dan 1 gelijktijdige databasekopie van dezelfde bron is toegestaan. Verwijder de doeldatabase en probeer het later opnieuw.
40566 16 Het kopiëren van de database is mislukt vanwege een interne fout. Verwijder de doeldatabase en probeer het opnieuw.
40567 16 Het kopiëren van de database is mislukt vanwege een interne fout. Verwijder de doeldatabase en probeer het opnieuw.
40568 16 Het kopiëren van de database is mislukt. De brondatabase is niet meer beschikbaar. Verwijder de doeldatabase en probeer het opnieuw.
40569 16 Het kopiëren van de database is mislukt. De doeldatabase is niet meer beschikbaar. Verwijder de doeldatabase en probeer het opnieuw.
40570 16 Het kopiëren van de database is mislukt vanwege een interne fout. Verwijder de doeldatabase en probeer het later opnieuw.
40571 16 Het kopiëren van de database is mislukt vanwege een interne fout. Verwijder de doeldatabase en probeer het later opnieuw.