Copiare un database SQL di AzureCopy an Azure SQL database

Il Database SQL di Azure fornisce diversi metodi per la creazione di una copia coerente a livello transazionale di un database SQL di Azure esistente nello stesso server o un altro server.Azure SQL Database provides several methods for creating a transactionally consistent copy of an existing Azure SQL database on either the same server or a different server. È possibile copiare un database SQL tramite il portale di Azure, PowerShell o T-SQL.You can copy a SQL database by using the Azure portal, PowerShell, or T-SQL.

PanoramicaOverview

Una copia del database è uno snapshot del database di origine al momento della richiesta di copia.A database copy is a snapshot of the source database as of the time of the copy request. È possibile selezionare lo stesso server o un server diverso, il relativo livello di servizio e livello di prestazioni o un livello di prestazioni diverso all'interno dello stesso livello di servizio (edizione).You can select the same server or a different server, its service tier and performance level, or a different performance level within the same service tier (edition). Al termine del processo di copia, questa diventa un database indipendente e completamente funzionante.After the copy is complete, it becomes a fully functional, independent database. A questo punto, è possibile aggiornare o effettuare il downgrade della copia a qualsiasi edizione.At this point, you can upgrade or downgrade it to any edition. Gli account di accesso, gli utenti e le autorizzazioni possono essere gestiti in modo indipendente.The logins, users, and permissions can be managed independently.

Account di accesso nella copia del databaseLogins in the database copy

Quando si copia un database nello stesso server logico, è possibile usare gli stessi account di accesso per entrambi i database.When you copy a database to the same logical server, the same logins can be used on both databases. L'entità di sicurezza usata per copiare il database diventa il proprietario del database nel nuovo database.The security principal you use to copy the database becomes the database owner on the new database. Tutti gli utenti del database, le relative autorizzazioni e i relativi identificatori di sicurezza (SID) vengono copiati nella copia del database.All database users, their permissions, and their security identifiers (SIDs) are copied to the database copy.

Quando la copia del database viene eseguita su un server logico diverso, l'entità di sicurezza sul nuovo server diventa il proprietario del database nel nuovo database.When you copy a database to a different logical server, the security principal on the new server becomes the database owner on the new database. L'uso di utenti di database indipendente per l'accesso ai dati garantisce che per i database primari e secondari ci siano sempre le stesse credenziali utente, in modo che dopo il completamento della copia sia possibile accedervi immediatamente con le stesse credenziali.If you use contained database users for data access, ensure that both the primary and secondary databases always have the same user credentials, so that after the copy is complete you can immediately access it with the same credentials.

Se si usa Azure Active Directory, è possibile eliminare completamente l'esigenza di gestione delle credenziali nella copia.If you use Azure Active Directory, you can completely eliminate the need for managing credentials in the copy. Tuttavia, quando si copia il database in un nuovo server, è possibile che l'accesso basato sulle credenziali non funzioni perché le credenziali di accesso non esistono nel nuovo server.However, when you copy the database to a new server, the login-based access might not work, because the logins do not exist on the new server. Per informazioni sulla gestione degli accessi con credenziali durante la copia di un database in un server logico differente, vedere Configurare e gestire la sicurezza dei database SQL di Azure per il ripristino geografico o il failover.To learn about managing logins when you copy a database to a different logical server, see How to manage Azure SQL database security after disaster recovery.

Dopo il completamento della copia e prima che venga modificato il mapping di altri utenti, solo l'account di accesso che ha avviato la copia, il proprietario del database, può accedere al nuovo database.After the copying succeeds and before other users are remapped, only the login that initiated the copying, the database owner, can log in to the new database. Per risolvere gli account di accesso al termine dell'operazione di copia, vedere Risolvere gli account di accesso.To resolve logins after the copying operation is complete, see Resolve logins.

Copiare un database tramite il portale di AzureCopy a database by using the Azure portal

Per copiare un database tramite il portale di Azure, aprire la pagina per il database e quindi fare clic su Copia.To copy a database by using the Azure portal, open the page for your database, and then click Copy.

Copia del database

Copiare un database tramite PowerShellCopy a database by using PowerShell

Per copiare un database tramite PowerShell usare il cmdlet New-AzureRmSqlDatabaseCopy.To copy a database by using PowerShell, use the New-AzureRmSqlDatabaseCopy cmdlet.

New-AzureRmSqlDatabaseCopy -ResourceGroupName "myResourceGroup" `
    -ServerName $sourceserver `
    -DatabaseName "MySampleDatabase" `
    -CopyResourceGroupName "myResourceGroup" `
    -CopyServerName $targetserver `
    -CopyDatabaseName "CopyOfMySampleDatabase"

Per uno script di esempio completo, vedere Copiare un database in un nuovo server.For a complete sample script, see Copy a database to a new server.

Copiare un database tramite Transact-SQLCopy a database by using Transact-SQL

Accedere al database master con l'account di accesso dell'entità di livello server o l'account di accesso con cui è stato creato il database che si desidera copiare.Log in to the master database with the server-level principal login or the login that created the database you want to copy. Affinché il processo di copia del database abbia esito positivo, gli account di accesso che non corrispondono all'entità di livello server devono essere membri del ruolo dbmanager.For database copying to succeed, logins that are not the server-level principal must be members of the dbmanager role. Per ulteriori informazioni sugli account di accesso e la connessione al server, vedere Gestire gli accessi.For more information about logins and connecting to the server, see Manage logins.

Iniziare a copiare il database di origine con l'istruzione CREATE DATABASE .Start copying the source database with the CREATE DATABASE statement. L'esecuzione di questa istruzione avvia il processo di copia del database.Executing this statement initiates the database copying process. Poiché la copia di un database è un processo asincrono, l'istruzione CREATE DATABASE viene restituita prima del completamento della copia del database.Because copying a database is an asynchronous process, the CREATE DATABASE statement returns before the database copying is complete.

Copiare un database SQL nello stesso serverCopy a SQL database to the same server

Accedere al database master con l'account di accesso dell'entità di livello server o l'account di accesso con cui è stato creato il database che si desidera copiare.Log in to the master database with the server-level principal login or the login that created the database you want to copy. Affinché il processo di copia del database abbia esito positivo, gli account di accesso che non corrispondono all'entità di livello server devono essere membri del ruolo dbmanager.For database copying to succeed, logins that are not the server-level principal must be members of the dbmanager role.

Questo comando copia Database1 in un nuovo database denominato Database2 sullo stesso server.This command copies Database1 to a new database named Database2 on the same server. A seconda delle dimensioni del database, l'operazione di copia potrebbe richiedere alcuni minuti.Depending on the size of your database, the copying operation might take some time to complete.

-- Execute on the master database.
-- Start copying.
CREATE DATABASE Database1_copy AS COPY OF Database1;

Copiare un database SQL in un server diversoCopy a SQL database to a different server

Accedere al database master del server di destinazione, il server del database SQL in cui verrà creato il nuovo database.Log in to the master database of the destination server, the SQL database server where the new database is to be created. Usare un account di accesso con lo stesso nome e la stessa password del proprietario del database di origine nel server del database SQL di origine.Use a login that has the same name and password as the database owner of the source database on the source SQL database server. L'account di accesso nel server di destinazione deve anche essere un membro del ruolo dbmanager o corrispondere all'account di accesso dell'entità di livello server.The login on the destination server must also be a member of the dbmanager role or be the server-level principal login.

Questo comando copia Database1 sul server1 in un nuovo database denominato Database2 sul server2.This command copies Database1 on server1 to a new database named Database2 on server2. A seconda delle dimensioni del database, l'operazione di copia potrebbe richiedere alcuni minuti.Depending on the size of your database, the copying operation might take some time to complete.

-- Execute on the master database of the target server (server2)
-- Start copying from Server1 to Server2
CREATE DATABASE Database1_copy AS COPY OF server1.Database1;

Monitorare lo stato dell'operazione di copiaMonitor the progress of the copying operation

Monitorare il processo di copia eseguendo una query sulle visualizzazioni sys.databases e sys.dm_database_copies.Monitor the copying process by querying the sys.databases and sys.dm_database_copies views. Durante il processo di copia, la colonna state_desc della visualizzazione sys.databases per il nuovo database viene impostata su COPYING.While the copying is in progress, the state_desc column of the sys.databases view for the new database is set to COPYING.

  • Se il processo di copia non viene completato, la colonna state_desc della visualizzazione sys.databases per il nuovo database viene impostata su SUSPECT.If the copying fails, the state_desc column of the sys.databases view for the new database is set to SUSPECT. Eseguire l'istruzione DROP sul nuovo database e riprovare in un secondo momento.Execute the DROP statement on the new database, and try again later.
  • Se il processo di copia viene completato, la colonna state_desc della visualizzazione sys.databases per il nuovo database viene impostata su ONLINE.If the copying succeeds, the state_desc column of the sys.databases view for the new database is set to ONLINE. La copia è stata completata e il nuovo database è un database standard, che può essere modificato indipendentemente dal database di origine.The copying is complete, and the new database is a regular database that can be changed independent of the source database.

Nota

Se si decide di annullare il processo di copia mentre è in corso, eseguire l'istruzione DROP DATABASE nel nuovo database.If you decide to cancel the copying while it is in progress, execute the DROP DATABASE statement on the new database. In alternativa, anche l'esecuzione dell'istruzione DROP DATABASE sul database di origine annulla il processo di copia.Alternatively, executing the DROP DATABASE statement on the source database also cancels the copying process.

Risolvere gli account di accessoResolve logins

Dopo che il nuovo database è online nel server di destinazione, usare l'istruzione ALTER USER per modificare il mapping degli utenti del nuovo database agli account di accesso nel server di destinazione.After the new database is online on the destination server, use the ALTER USER statement to remap the users from the new database to logins on the destination server. Per risolvere gli utenti isolati, vedere Risolvere i problemi relativi agli utenti isolati (SQL Server).To resolve orphaned users, see Troubleshoot Orphaned Users. Vedere anche Come gestire la sicurezza dopo il ripristino di emergenza.See also How to manage Azure SQL database security after disaster recovery.

Tutti gli utenti nel nuovo database mantengono le autorizzazioni di cui disponevano nel database di origine.All users in the new database retain the permissions that they had in the source database. L'utente che ha avviato la copia del database diventa il proprietario del nuovo database e gli viene assegnato un nuovo ID di sicurezza (SID).The user who initiated the database copy becomes the database owner of the new database and is assigned a new security identifier (SID). Dopo il completamento della copia e prima che venga modificato il mapping di altri utenti, solo l'account di accesso che ha avviato la copia, il proprietario del database, può accedere al nuovo database.After the copying succeeds and before other users are remapped, only the login that initiated the copying, the database owner, can log in to the new database.

Per informazioni sulla gestione di utenti e account di accesso durante la copia di un database in un server logico diverso, vedere Configurare e gestire la sicurezza dei database SQL di Azure per il ripristino geografico o il failover.To learn about managing users and logins when you copy a database to a different logical server, see How to manage Azure SQL database security after disaster recovery.

Passaggi successiviNext steps