Creare una copia coerente a livello transazionale di un database SQL di Azure
Si applica a:Database SQL di Azure
Il database SQL di Azure offre diversi metodi per creare una copia di un database esistente nello stesso server logico del database SQL di Azure o in un server logico diverso. È possibile copiare un database tramite il portale di Azure, PowerShell, l'interfaccia della riga di comando di Azure o Transact-SQL.
Nota
Microsoft Entra ID era precedentemente conosciuto come Azure Active Directory (Azure AD).
Panoramica
La copia del database è uno snapshot coerente a livello di transazioni del database di origine e temporizzato all’avvio della richiesta di copia. È possibile selezionare lo stesso server logico o un server logico diverso per la copia. È inoltre possibile scegliere di mantenere la ridondanza del backup e le dimensioni di calcolo del database di origine oppure usare una ridondanza dell'archiviazione di backup diversa e/o le dimensioni di calcolo all'interno dello stesso livello di servizio. È inoltre possibile copiare un database del livello di servizio Standard nel livello Standard o per utilizzo generico e un database del livello di servizio Premium nel livello Premium o Business critical.
Al termine della copia, il nuovo database è un database completamente funzionale e indipendente nel database di origine. Accessi, utenti e autorizzazioni nel database copiato vengono gestiti in modo indipendente rispetto al database di origine. La copia viene creata usando la tecnologia di replica geografica. Al termine del seeding della replica, il collegamento di replica geografica viene terminato automaticamente. All'operazione di copia del database si applicano tutti i requisiti per l'uso della replica geografica. Per informazioni dettagliate, vedere Panoramica della replica geografica attiva.
Nota
Il portale di Azure, PowerShell e l'interfaccia della riga di comando di Azure non supportano la copia del database in una sottoscrizione diversa.
Copia del database per i database Hyperscale
Per i database nel livello di servizio Hyperscale, il database di destinazione determina se la copia sarà una copia veloce o una copia della dimensione dei dati:
Copia veloce: quando viene eseguita nella stessa area d'origine, la copia viene creata dagli snapshot dei BLOB, questa copia è un'operazione veloce indipendentemente dalle dimensioni del database.
Copia delle dimensioni dei dati: quando il database di destinazione si trova in un'area diversa dall'origine o se la ridondanza dell'archiviazione di backup del database (locale, zonale, geografica) dalla destinazione è diversa dal database di origine, l'operazione di copia è un'operazione di dimensionamento dei dati. Il tempo di copia non è direttamente proporzionale alle dimensioni, poiché i BLOB del server di pagine vengono copiati in parallelo.
Account di accesso nella copia del database
Quando si copia un database nello stesso server logico, è possibile usare gli stessi account di accesso in entrambi i database. L'entità di sicurezza usata per copiare il database diventa il proprietario del database nel nuovo database.
Quando si copia un database in un server logico diverso, l'entità di sicurezza che ha avviato l'operazione di copia nel server logico di destinazione diventa il proprietario del nuovo database.
A prescindere dal server di destinazione, tutti gli utenti del database, le relative autorizzazioni e i relativi ID di sicurezza (SID) vengono copiati nella copia del database. L'uso di utenti di database indipendente per l'accesso ai dati garantisce che il database copiato abbia le stesse credenziali utente, in modo che dopo il completamento della copia sia possibile accedervi immediatamente con le stesse credenziali
Se si usano accessi a livello di server per l'accesso ai dati e si copia il database in un server diverso, l'accesso potrebbe non funzionare. Ciò può verificarsi perché gli account di accesso non esistono nel server logico di destinazione o perché tali password e identificatori di sicurezza (SID) sono diversi. Per ulteriori informazioni sulla gestione dei login quando si copia un database su un server diverso, vedere Configurare e gestire la sicurezza di Azure SQL Database per il ripristino geografico o il failover. Dopo che l'operazione di copia su un server logico diverso ha avuto esito positivo, e prima che altri utenti vengano rimappati, solo il login associato al proprietario del database o l'amministratore del server può effettuare l'accesso al database copiato. Per risolvere gli accessi e ristabilire l'accesso ai dati al termine dell'operazione di copia, vedere Risolvere gli accessi.
Copiare usando il portale di Azure
Per copiare un database usando il portale di Azure, aprire la pagina per il database, quindi scegliere Copia per aprire la pagina Crea database SQL - Copia database. Immettere i valori per il server logico di destinazione in cui si vuole copiare il database.
Copiare un database
È possibile copiare un database tramite PowerShell, l'interfaccia della riga di comando di Azure o Transact-SQL (T-SQL).
Per PowerShell, usare il cmdlet New-AzSqlDatabaseCopy.
Importante
Il modulo Azure Resource Manager (RM) di PowerShell è ancora supportato dal database SQL di Azure, ma tutte le attività di sviluppo future sono incentrate sul modulo Az.Sql. Il modulo AzureRM continuerà a ricevere correzioni di bug almeno fino a dicembre 2020. Gli argomenti per i comandi nei moduli Az e AzureRm sono sostanzialmente identici. Per altre informazioni sulla compatibilità, vedere Introduzione del nuovo modulo Az di Azure PowerShell.
New-AzSqlDatabaseCopy -ResourceGroupName "<resourceGroup>" -ServerName $sourceserver -DatabaseName "<databaseName>" `
-CopyResourceGroupName "myResourceGroup" -CopyServerName $targetserver -CopyDatabaseName "CopyOfMySampleDatabase"
La copia del database è un'operazione asincrona, ma il database di destinazione viene creato immediatamente dopo l'accettazione di tale richiesta. Se è necessario annullare l'operazione di copia mentre è ancora in corso, eliminare il database di destinazione usando il cmdlet Remove-AzSqlDatabase.
Per uno script di PowerShell di esempio completo, vedere Usare PowerShell per copiare un database in un nuovo server logico.
Monitorare lo stato dell'operazione di copia
Monitorare il processo di copia eseguendo una query sulle viste sys.databases, sys.dm_database_copies e sys.dm_operation_status. Durante il processo di copia, la colonna state_desc
della vista sys.databases
per il nuovo database viene impostata su COPYING
.
- Se il processo di copia non riesce, la colonna
state_desc
della vistasys.databases
per il nuovo database viene impostata suSUSPECT
. Eseguire l'istruzione DROP sul nuovo database e riprovare in un secondo momento. - Se il processo di copia riesce, la colonna
state_desc
della vistasys.databases
per il nuovo database viene impostata suONLINE
. La copia è stata completata e il nuovo database è un database standard, che può essere modificato indipendentemente dal database di origine.
Nota
Se si decide di annullare il processo di copia mentre è in corso, eseguire l'istruzione DROP DATABASE nel nuovo database.
Importante
Se è necessario creare una copia con un obiettivo di servizio notevolmente inferiore rispetto all'origine, il database di destinazione potrebbe non avere risorse sufficienti per completare il processo di seeding e ciò può causare l'esito negativo dell'operazione di copia. In questo scenario usare una richiesta di ripristino geografico per creare una copia in un server logico diverso e/o in un'area diversa. Per altre informazioni, vedere Ripristinare un database SQL di Azure mediante i backup del database.
Autorizzazioni
Per creare una copia del database, è necessario disporre dei ruoli seguenti:
- Proprietario della sottoscrizione
- Ruolo di Collaboratore SQL Server o
- Ruolo personalizzato nel server logico di origine con le autorizzazioni seguenti:
Microsoft.Sql/servers/databases/read
-
Microsoft.Sql/servers/databases/write
e [aggiungere il testo mancante qui]
- Ruolo personalizzato nel server logico di destinazione con le autorizzazioni seguenti:
Microsoft.Sql/servers/read
Microsoft.Sql/servers/databases/read
Microsoft.Sql/servers/databases/write
Per annullare una copia del database, è necessario disporre dei ruoli seguenti:
- Proprietario della sottoscrizione
- Ruolo di Collaboratore SQL Server o
- Ruolo personalizzato nel database di destinazione con l'autorizzazione seguente:
Microsoft.Sql/servers/databases/delete
Per gestire la copia del database usando il portale di Azure sono necessarie anche le autorizzazioni seguenti:
Microsoft.Resources/subscriptions/resources/read
Microsoft.Resources/deployments/read
Microsoft.Resources/deployments/write
Microsoft.Resources/deployments/operationstatuses/read
Se si vogliono visualizzare le operazioni nelle distribuzioni nel gruppo di risorse nel portale e le operazioni in più provider di risorse, incluse le operazioni SQL, sono necessarie queste autorizzazioni aggiuntive:
Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read
Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read
Risolvere gli account di accesso
Dopo che il nuovo database è online nel server logico di destinazione, usare l'istruzione ALTER USER per eseguire nuovamente il mapping degli utenti dal nuovo database ai login sul server logico di destinazione. Per risolvere gli utenti isolati, vedere Risolvere i problemi relativi agli utenti isolati (SQL Server). Consultare anche Configurare e gestire la sicurezza del database SQL di Azure per il ripristino geografico o il failover.
Tutti gli utenti nel nuovo database mantengono le autorizzazioni di cui disponevano nel database di origine. L'utente che ha avviato la copia del database diventa il proprietario del nuovo database. Dopo il completamento della copia e prima che venga modificato il mapping di altri utenti, solo il proprietario del database può accedere al nuovo database.
Per informazioni sulla gestione di utenti e account di accesso quando si copia un database in un server logico diverso, vedere Configurare e gestire la sicurezza del database SQL di Azure per il ripristino geografico o il failover.
Errori di copia del database
Durante la copia di un database nel database SQL di Azure, possono essere rilevati gli errori seguenti. Per altre informazioni, vedere Copiare una versione coerente a livello transazionale di un database in Azure SQL Database.
Codice di errore | Gravità | Descrizione |
---|---|---|
40635 | 16 | Il client con indirizzo IP '%.*ls' è temporaneamente disabilitato. |
40637 | 16 | La creazione della copia del database è attualmente disabilitata. |
40561 | 16 | Copia del database non riuscita. Il database di origine o di destinazione non esiste. |
40562 | 16 | Copia del database non riuscita. Il database di origine è stato rimosso. |
40563 | 16 | Copia del database non riuscita. Il database di destinazione è stato rimosso. |
40564 | 16 | Copia del database non riuscita a causa di un errore interno. Rimuovere il database di destinazione e riprovare. |
40565 | 16 | Copia del database non riuscita. Non è consentita più di una copia simultanea del database dalla stessa origine. Rimuovere il database di destinazione e riprovare in un secondo momento. |
40566 | 16 | Copia del database non riuscita a causa di un errore interno. Rimuovere il database di destinazione e riprovare. |
40567 | 16 | Copia del database non riuscita a causa di un errore interno. Rimuovere il database di destinazione e riprovare. |
40568 | 16 | Copia del database non riuscita. Il database di origine non è più disponibile. Rimuovere il database di destinazione e riprovare. |
40569 | 16 | Copia del database non riuscita. Il database di destinazione non è più disponibile. Rimuovere il database di destinazione e riprovare. |
40570 | 16 | Copia del database non riuscita a causa di un errore interno. Rimuovere il database di destinazione e riprovare in un secondo momento. |
40571 | 16 | Copia del database non riuscita a causa di un errore interno. Rimuovere il database di destinazione e riprovare in un secondo momento. |
Contenuto correlato
- Autorizzare l'accesso al database a database SQL, Istanza gestita di SQL e Azure Synapse Analytics
- Configurare e gestire la sicurezza dei database SQL di Azure per il ripristino geografico o il failover
- Eseguire l'esportazione in un file BACPAC - Database SQL di Azure e Istanza gestita di SQL di Azure