Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come copiare i database di SQL Server da un'istanza all'altra

La copia o lo spostamento di database è una delle attività più comuni per i professionisti dei dati che si occupano regolarmente della distribuzione di script o di nuove soluzioni in ambienti diversi. Con SQL Server, abbiamo diversi modi in cui possiamo farlo in modo nativo senza utilizzare strumenti di terze parti.

Soluzioni native all'interno di SQL Server

Ecco alcuni modi in cui possiamo eseguire questa attività in modo nativo in SQL Server:

  • In SQL Server, normalmente eseguiamo backup completi del database sul database di origine, lo copiamo sul server di destinazione e quindi eseguiamo il ripristino. Questo potrebbe rivelarsi un compito impegnativo per i neofiti o per i professionisti che non ricoprono il ruolo di DBA. A meno che tu non disponga di una soluzione di scripting adeguata, potresti riscontrare problemi e faticare a raggiungere questo obiettivo mentre gestisci enormi database.
  • Un'altra opzione è il metodo detach\attach. Questo metodo è comunemente usato, ma di nuovo è necessario prestare attenzione quando si ha a che fare con database di grandi dimensioni o con database che includono un numero di dati o file di registro. Inoltre, il database di origine andrebbe offline durante l'utilizzo di questo approccio. A meno che tu non sia un amministratore di database esperto, potresti comunque avere problemi mentre gestisci database di grandi dimensioni.

Sono disponibili altre opzioni che possono essere utilizzate, come l'utilizzo della procedura guidata di copia del database o della procedura guidata di importazione\esportazione dei dati ai fini dell'importazione\esportazione dei dati. È inoltre necessario assicurarsi che gli accessi e le autorizzazioni dal server di origine vengano migrati correttamente al server di destinazione, altrimenti gli utenti dell'applicazione potrebbero avere problemi a connettersi correttamente al database.

Utilizzo di dbForge Studio per SQL Server per copiare o spostare database da un'istanza all'altra o da un server all'altro

Venendo al software di terze parti, dbForge Studio per SQL Server di Devart ha una funzione interessante integrata nel prodotto per eseguire la copia o lo spostamento di database in pochi semplici passaggi. Esamineremo il processo con una demo in questo articolo.

La versione di prova dura un mese e ti dà un po' di tempo sufficiente per testare le altre funzionalità integrate nel prodotto. Per questa demo viene utilizzata la versione di prova Enterprise 5.5.

Una volta eseguito dbForge Studio, verrà visualizzata questa schermata per aggiornare i dettagli della connessione al database. Con questo, sarai in grado di connetterti alla tua istanza di SQL Server.

Per eseguire connessioni aggiuntive ad altre istanze SQL, fai clic sull'icona che aprirà la finestra per una nuova connessione al database.

Di seguito, puoi vedere che ho già effettuato una connessione a un'istanza SQL esistente.

Dopo esserti connesso alle istanze di SQL Server, puoi visualizzare i database che prevedi di copiare o spostare tra le istanze. In questa demo, copieremo il test del database dall'istanza SQL:da Boulcott a Boulcott\INST2.

Per copiare il test database su INST2, vai a Sincronizzazione database opzione nella scheda principale e fai clic su Copia database .

Si apre la finestra Copia database. Qui puoi inserire i dettagli dei server di origine e di destinazione. In questa demo, stiamo copiando il database tra istanze che si trovano sulla stessa macchina. Puoi utilizzare lo strumento dbForge anche per copiare database su server diversi. Inserisci i dettagli del server come mostrato, assicurati che la connessione sia riuscita, quindi fai clic su Avanti .

Al termine, viene visualizzato l'elenco dei database disponibili sul server di origine. Seleziona il database su cui intendi copiare. Nel nostro esempio, è il test Banca dati. Seleziona la Copia casella di controllo dell'opzione e fai clic su Avanti . Qui ho selezionato solo un database da copiare. Ma lo strumento non è limitato a un database alla volta in quanto possiamo selezionare più database da copiare o spostare contemporaneamente.

Seleziona le opzioni per la posizione del database di destinazione

Come puoi vedere, i percorsi dei dati e dei file di registro per il database di destinazione possono essere modificati in quelli che avevi intenzione di utilizzare. I valori vengono generati automaticamente ma possono essere facilmente modificati. Anche il nome del database di destinazione può essere modificato.

Fai clic su Avanti . Viene visualizzata la finestra delle impostazioni di trasferimento. È necessario assicurarsi che l'account di SQL Server Agent disponga di privilegi sufficienti per eseguire l'operazione di copia. Esamina attentamente questa sezione in quanto potrebbe causare problemi se l'account di SQL Server Agent non dispone delle autorizzazioni necessarie. Nel mio caso, poiché le istanze si trovano all'interno dello stesso server, non è richiesta una directory di cartelle condivise. Tuttavia, se devi copiare il database tra istanze SQL su server diversi, è necessaria una directory di cartelle condivise con autorizzazioni sufficienti per l'account dell'agente SQL. Una volta terminata la revisione, fai clic su Avanti .

Nella scheda Copia accessi, puoi decidere l'opzione corretta in base alle tue esigenze. Per impostazione predefinita, Copia tutti gli accessi utilizzati dai database selezionati è abilitato. Fai la scelta appropriata nel tuo caso, rivedi e fai clic su Avanti .

Esegui il processo di copia con dbForge Studio

Lo screenshot seguente mostra dove è possibile avviare il processo di esecuzione per l'attività di copia. Abbiamo la possibilità di scegliere i tipi di gestione degli errori possibili durante il processo di esecuzione. Per impostazione predefinita, richiedi un'azione a un utente è selezionato. In questa demo, ho anche abilitato l'opzione per scrivere un rapporto in un file di registro che sarebbe utile per gestire qualsiasi tipo di errore. Il registro degli errori è piuttosto dettagliato e fornisce in dettaglio il motivo di qualsiasi errore di processo. Al termine, fai clic su Esegui opzione che avvierà il processo di esecuzione.

È possibile visualizzare lo stato di avanzamento dell'attività di esecuzione.

Completamento del processo di copia

Una volta completato il processo, vedrai questa notifica che conferma che il processo di copia è stato completato.

Facendo clic su Mostra file di registro opzione, puoi vedere i dettagli dell'esecuzione del processo e lo stato delle attività completate. Puoi eseguire più operazioni di copia facendo clic su Copia altro opzione.

Controlla l'istanza SQL di destinazione

Il passaggio successivo consiste nel connettersi all'istanza SQL di destinazione e verificare che il database venga copiato. Sull'istanza SQL di destinazione è presente il test database che è stato copiato correttamente utilizzando dbForge Studio per SQL Server.

Sposta i database dall'origine all'istanza SQL di destinazione

In precedenza, siamo stati in grado di copiare correttamente un database dal server di origine al server di destinazione. Potremmo anche utilizzare questo strumento e la demo precedente se invece hai bisogno di spostare i database.

Nella finestra Seleziona database, seleziona Sposta opzione.

Ciò fondamentalmente migrerebbe i database dal server di origine a quello di destinazione. Basta seguire i passaggi descritti in precedenza. Avevo fermato intenzionalmente SQL Server Agent sul server di destinazione e ho riscontrato questa schermata di errore.

Quando fai clic su No , ti porterà all'opzione per visualizzare i file di registro.

Il pulsante Mostra file di registro... ti porterà al file di registro dettagliato in cui è possibile identificare il motivo effettivo dell'errore.

Qui puoi vedere esattamente il motivo dell'operazione fallita. Vedrai anche che un processo di SQL Agent viene creato sul server di destinazione durante l'esecuzione e può essere visualizzato.

Questo lavoro esiste solo per la durata del processo di esecuzione e viene eliminato una volta completato il processo. Connettiti alle istanze SQL di destinazione e di origine per confermare che i database si siano effettivamente spostati. Lo screenshot seguente conferma che i database 1 e 2 sono stati spostati con successo dal server di origine a quello di destinazione.

Copia i database dall'istanza SQL di origine a quella di destinazione ed esegui l'override

Finora, abbiamo copiato e spostato i database dal server di origine a quello di destinazione. Quindi, esegui un passaggio aggiuntivo per copiare e sovrascrivere i database di WideWorldImporters.

Questo processo è simile ai passaggi precedenti per la copia o lo spostamento dei database con un solo passaggio aggiuntivo per selezionare l'override opzione.

Segui semplicemente il resto dei passaggi in modo simile a quanto fatto in precedenza e il processo avrà esito positivo una volta completato. Per riassumere, utilizzando il Copia database opzione nello strumento dbForge Studio, è possibile eseguire le seguenti funzioni:

  • Copia i database dal server di origine a quello di destinazione
  • Sposta i database dal server di origine a quello di destinazione
  • Copia e sovrascrivi i database dal server di origine a quello di destinazione
  • Sposta e sovrascrivi i database dal server di origine a quello di destinazione

Conclusione

  • Con questa demo, hai visto la facilità con cui un database può essere copiato da un'istanza SQL all'altra con un input dell'utente molto ridotto utilizzando dbForge Studio
  • Un altro vantaggio di questo strumento è che più database possono essere copiati o spostati in diverse istanze contemporaneamente
  • Per eseguire queste attività è richiesta pochissima competenza tecnica poiché lo strumento è intuitivo e basato su GUI
  • Questo strumento può essere molto utile soprattutto se stai implementando rapidamente distribuzioni in diversi ambienti server e se il tempo è un vincolo

Strumento utile:

dbForge Studio per SQL Server:potente IDE per la gestione, l'amministrazione, lo sviluppo, il reporting e l'analisi dei dati di SQL Server.