Esporta (0) Stampa
Espandi tutto
6 di 11 hanno valutato il contenuto utile: - Valuta questo argomento

Procedura: Copiare i database (database SQL di Windows Azure)

Aggiornamento: novembre 2013

In questo argomento viene illustrato come copiare un database del database SQL di Windows Azure in un nuovo database nello stesso server Database SQL o in un altro. Il nuovo database è un database Database SQL normale completamente funzionante e indipendente dal database di origine. Per ulteriori informazioni, vedere Copia di database nel database SQL di Windows Azure.

È possibile eseguire il backup di un database Database SQL eseguendone la copia. Copiando il database in un server diverso lo si protegge da eliminazioni o modifiche indesiderate. Dalla prospettiva del backup del database, la copia di un database nel Database SQL in base a una pianificazione ricorrente è simile all'esecuzione di backup completi di un database di SQL Server locale. In ogni caso, dopo che la copia viene completata correttamente, è possibile eliminare il database da cui è stata copiata la ricorrenza precedente. Per ulteriori informazioni su altre opzioni di backup e ripristino e sulle funzionalità di continuità aziendale, vedere Backup e ripristino di database SQL di Windows Azure e Continuità aziendale nel database SQL di Windows Azure

Contenuto dell'argomento

Prima di iniziare

Restrizioni

  • Una regione del Database SQL può essere costituita da più cluster fisici. Non è tuttavia possibile copiare un database tra due diversi cluster. Messaggio di errore: se si tenta di copiare un database tra due cluster diversi, l'operazione di copia restituirà l'errore seguente:

    Messaggio 40532 - Impossibile aprire il server "<server name>" richiesto dall'account di accesso. Accesso non riuscito.

    Per determinare se è possibile copiare un database: utilizzare il comando ping ("ping <server>") sia nel server di origine sia in quello di destinazione per risolvere i relativi indirizzi IP. Se gli indirizzi IP sono uguali, la copia del database è possibile. Per ulteriori informazioni, vedere Utilizzo del comando Ping.

    Workaround procedure: se la copia del database non è possibile, effettuare le operazioni seguenti:

    1. Creare due nuovi server logici nella stessa regione (i server devono ricevere lo stesso indirizzo IP).

    2. Eseguire una migrazione del database offline per spostare il database in uno di questi server. È possibile utilizzare vari strumenti, ad esempio il servizio di importazione/esportazione. Per ulteriori informazioni, vedere Servizio di importazione/esportazione di database SQL o Procedura: Migrazione di un database tramite la procedura guidata di generazione script (database SQL di Windows Azure).

    È ora possibile effettuare la copia del database tra questi due server.

Durata delle operazioni di copia

Il carico di lavoro della copia del database influisce sulle prestazioni del server o dei server Database SQL interessati dal processo di copia. È pertanto possibile che il processo di copia richieda ulteriore tempo. Se durante la copia del database si verifica un errore, riavviare il processo quando la richiesta sul database di origine è bassa. Per agevolare il completamento del processo di copia, potrebbe essere necessario sospendere altri carichi di lavoro nel database di origine.

Autorizzazioni

Per copiare un database in Database SQL, è necessario disporre delle autorizzazioni seguenti:

  • Entrambi i server: per gli account di accesso è necessario utilizzare nome e password uguali su entrambi i server Database SQL.

  • Server di destinazione: gli account di accesso devono appartenere a un membro con il ruolo dbmanager a livello di server. Notare: l'entità di livello server di Database SQL non è un membro del ruolo dbmanager, tuttavia dispone automaticamente delle stesse autorizzazioni. Per ulteriori informazioni sulla gestione degli account di accesso in Database SQL, vedere Gestione di database e account di accesso in database SQL di Windows Azure.

  • Server di origine: l'account di accesso deve essere proprietario del database di origine. È possibile copiare il database in un altro database solo utilizzando gli account di accesso con i quali è stato creato il database di origine (DBO).

Quando vengono soddisfatti i requisiti di autorizzazione, con l'account di accesso è possibile eseguire le istruzioni ALTER DATABASE e DROP DATABASE di Database SQL nel nuovo database.

noteNota
La modifica del proprietario del database con l'istruzione ALTER AUTHORIZATION ON DATABASE di Database SQL non è supportata da Database SQL. Analogamente a quanto accade in SQL Server, è possibile creare utenti aggiuntivi nel database in Database SQL e aggiungerli al ruolo db_owner a livello di database. Questi utenti aggiuntivi possono essere collegati ad account di accesso diversi da quelli utilizzati per la creazione del database. Questi utenti aggiuntivi non possono tuttavia copiare il database.

Icona freccia utilizzata con il collegamento Torna all'inizio [Inizio pagina]

Effettuare la copia nello stesso server (Transact-SQL)

Per copiare il database in un nuovo database nello stesso server

  • Accedere al database master utilizzando l'account di accesso dell'entità di livello server o l'account di accesso che ha creato il database che si desiderare copiare. Gli account di accesso che non sono un'entità di livello server devono essere membri del ruolo dbmanager per copiare i database. Per ulteriori informazioni sugli account di accesso e sulla connessione al server, vedere rispettivamente Gestione di database e account di accesso in database SQL di Windows Azure e Procedure per lo sviluppo (database SQL di Windows Azure).

  • Avviare la copia del database di origine utilizzando l'istruzione CREATE DATABASE di Database SQL. L'esecuzione di questa istruzione dà avvio al processo di copia del database. Poiché la copia di un database è un processo asincrono, l'istruzione CREATE DATABASE restituirà un risultato prima della fine della copia del database.

  • Monitorare il processo di copia eseguendo query sulle viste sys.databases e sys.dm_database_copies.

    • Durante il processo di copia, la colonna state_desc della vista sys.databases per il nuovo database viene impostata su COPYING.

    • Se la copia non riesce, la colonna state_desc della vista sys.databases per il nuovo database viene impostata su SUSPECT. In questo caso, eseguire l'istruzione DROP sul nuovo database e riprovare più tardi.

    • Se la copia viene completata correttamente, la colonna state_desc della vista sys.databases per il nuovo database viene impostata su ONLINE. In questo caso, la copia è completa e il nuovo database è un database normale che può essere modificato indipendentemente dal database di origine.

  • (Facoltativo) Se si decide di annullare la copia mentre è in corso, eseguire l'istruzione DROP DATABASE sul nuovo database. Per annullare il processo di copia, è anche possibile eseguire l'istruzione DROP DATABASE sul database di origine.

Esempio (Transact-SQL)

Tramite l'esempio di codice riportato di seguito viene avviato il processo di copia del database. In questo esempio il Database1A viene copiato in un nuovo database denominato Database1B nello stesso server Database SQL.

-- Execute on the master database.
-- Start copying.
CREATE DATABASE Database1B AS COPY OF Database1A;

Gli esempi di codice seguenti possono essere utilizzati per monitorare il processo di copia del database eseguendo query sulle viste sys.databases e sys.dm_database_copies per ottenere informazioni sul nuovo database denominato Database1B.

-- Execute on the master database.
-- Retrieve state of the new database, Database1B.
SELECT name, state, state_desc FROM sys.databases WHERE name = 'Database1B'

ImportantImportante
Tramite l'istruzione seguente viene restituito un set di risultati solo mentre la copia è in corso. Quando la copia è terminata e il nuovo database è online, tramite questa query non verrà più restituito alcun risultato.

-- Execute on the master database.
-- Retrieve copying details.
SELECT * FROM sys.dm_database_copies copies
Inner JOIN sys.databases databases ON copies.database_id = databases.database_id
      WHERE databases.name = 'Database1B';

Icona freccia utilizzata con il collegamento Torna all'inizio [Inizio pagina]

Effettuare la copia in un altro server (Transact-SQL)

Per copiare il database in un nuovo database in un altro server

  • Accedere al database master del server di destinazione, il server Database SQL in cui verrà creato il nuovo database. Utilizzare un account di accesso che abbia lo stesso nome e la stessa password del proprietario del database (DBO) del database di origine nel server Database SQL di origine. Anche l'account di accesso nel server di destinazione deve essere un membro del ruolo dbmanager o l'account di accesso dell'entità di livello server. Per ulteriori informazioni sugli account di accesso e sulla connessione al server, vedere rispettivamente Gestione di database e account di accesso in database SQL di Windows Azure e Procedure per lo sviluppo (database SQL di Windows Azure).

  • Avviare la copia del database di origine utilizzando l'istruzione CREATE DATABASE di Database SQL. L'esecuzione di questa istruzione nel server di destinazione avvia il processo di copia del database. Poiché la copia di un database è un processo asincrono, l'istruzione CREATE DATABASE restituirà un risultato prima della fine della copia del database.

  • Monitorare il processo di copia eseguendo query sulle viste sys.databases e sys.dm_database_copies.

    • Durante il processo di copia, la colonna state_desc della vista sys.databases per il nuovo database viene impostata su COPYING.

    • Se la copia non riesce, la colonna state_desc della vista sys.databases per il nuovo database viene impostata su SUSPECT. In questo caso, eseguire l'istruzione DROP sul nuovo database e riprovare più tardi.

    • Se la copia viene completata correttamente, la colonna state_desc della vista sys.databases per il nuovo database viene impostata su ONLINE. In questo caso, la copia è completa e il nuovo database è un database normale che può essere modificato indipendentemente dal database di origine.

  • (Facoltativo) Se si decide di annullare la copia mentre è in corso, eseguire l'istruzione DROP DATABASE sul nuovo database. Per annullare il processo di copia, è anche possibile eseguire l'istruzione DROP DATABASE sul database di origine.

  • (Facoltativo) Quando il nuovo database è online nel server di destinazione, utilizzare l'istruzione ALTER USER per modificare il mapping degli utenti dal nuovo database agli account di accesso nel server di destinazione. Tutti gli utenti del nuovo database gestiscono le autorizzazioni ottenute nel database di origine. 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). Dopo il completamento della copia e prima della modifica del mapping degli altri utenti, solo l'account di accesso che ha avviato la copia, ovvero il proprietario del database (DBO), può accedere al nuovo database.

Esempio (Transact-SQL)

Tramite l'esempio di codice riportato di seguito viene avviato il processo di copia del database da Server2. In questo esempio viene illustrata la copia del Database1A dal server Database SQL denominato Server1 in un nuovo database denominato Database2A in Server2.

-- Execute on the master database of Server2
-- Start copying from Server1 to Server2
CREATE DATABASE Database2A AS COPY OF Server1.Database1A;

Tramite l'esempio di codice riportato di seguito viene monitorato il processo di copia del database. Nell'esempio vengono eseguite query sulle viste sys.databases e sys.dm_database_copies su Server2 per ottenere informazioni sul nuovo database denominato Database2A.

ImportantImportante
Tramite l'istruzione seguente viene restituito un set di risultati solo mentre la copia è in corso. Quando la copia è terminata e il nuovo database è online, tramite questa query non verrà più restituito alcun risultato.

-- Execute on the master database.
-- Retrieve state of the new database, Database1B.
SELECT name, state, state_desc FROM sys.databases WHERE name = 'Database1B'

ImportantImportante
Tramite l'istruzione seguente viene restituito un set di risultati solo mentre la copia è in corso. Quando la copia è terminata e il nuovo database è online, tramite questa query non verrà più restituito alcun risultato.

-- Execute on the master database.
-- Retrieve copying details.
SELECT * FROM sys.dm_database_copies copies
Inner JOIN sys.databases databases ON copies.database_id = databases.database_id
      WHERE databases.name = 'Database1B';

Icona freccia utilizzata con il collegamento Torna all'inizio [Inizio pagina]

Arrestare il processo di copia (Transact-SQL)

Se si desidera arrestare il processo di copia prima che venga completato, è possibile utilizzare l'istruzione DROP DATABASE per eliminare i database di destinazione. L'eliminazione del database di origine comporta l'annullamento del processo di copia. Affinché queste opzioni funzionino come previsto, utilizzare un account di accesso che soddisfi i requisiti delle autorizzazioni come descritto in Autorizzazioni, più indietro in questo argomento.

Icona freccia utilizzata con il collegamento Torna all'inizio [Inizio pagina]

Completamento: al termine della copia

  • Al termine del processo di copia del database, il nuovo database si troverà in uno dei due stati possibili:

    • Se il processo di copia è stato completato correttamente, il nuovo database si troverà nello stato ONLINE. Quando il nuovo database è online, può essere gestito e utilizzato indipendentemente dal database di origine.

    • Se il processo di copia non è stato completato correttamente, il nuovo database si troverà nello stato SUSPECT. Il database in questo stato non è disponibile, né accessibile e non può essere recuperato. In questo caso, eliminare il database di destinazione e provare a copiare nuovamente il database di origine.

    Per visualizzare lo stato, eseguire una query sulla colonna state_desc nella vista sys.databases.

  • Al termine della copia, l'edizione e la dimensione massima del nuovo database saranno uguali a quelle del database di origine. Per informazioni su come impostare e modificare l'edizione o la dimensione massima in Database SQL, vedere Account e fatturazione nel database SQL di Windows Azure.

  • Al termine di un processo di copia tra server, gli account di accesso, gli utenti e le autorizzazioni di copia possono essere gestiti indipendentemente dal database di origine. Utilizzare l'account di accesso DBO e l'istruzione ALTER USER per eseguire il mapping degli utenti nel nuovo database agli account di accesso nel nuovo server di Database SQL. Ad esempio: ALTER USER userName WITH LOGIN='loginName'. Per ulteriori informazioni, vedere ALTER USER (database SQL di Windows Azure).

Icona freccia utilizzata con il collegamento Torna all'inizio [Inizio pagina]

Vedere anche

Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft. Tutti i diritti riservati.