DBCC CLONEDATABASE cos'è e a che cosa serve

Ciao a tutti,

Oggi articoli leggero leggero.
Voglio parlarvi di un comando che potrebbe tornarvi utile in molte molte occasioni.

Avete presente quando avete il vostro bel database del cliente sottomano ed avreste bisogno di averne uno con la stessa identica struttura ma vuoto.

Fino ad adesso cosa avreste fatto?

Beh avreste percorso l'unica strada percorribile... inziare a svuotare le tabelle una per una togliendo o disabilitando tutti i constraint.

Operazione sinceramente tediosa!

E allora?

Bhe dovete sapere che a partire da SQL Server 2014 SP2 è stato introdotto un nuovo comando che si chiama:

DBCC CLONEDATABASE(DB_ORIGINALE,DB_DESTINAZIONE)


Avrete già capito dacchè il nome racconta tutto.

Questo comando appunto clona la struttura del database senza copiare i dati.

WOW!

Diciamo che ovviamente il database sorgente dovrà essere leggibile ed integro.

Ma proviamolo!

 

Il test 


Digitiamo il comando T-SQL sopra:


DBCC CLONEDATABASE('TEST_TEMPDB','TEST_TEMPDB2')

ed eseguiamolo.

Otteniamo queste informazioni.


La clonazione del database per 'TEST_TEMPDB' è stata avviata con 'TEST_TEMPDB2' come destinazione.
La clonazione del database per 'TEST_TEMPDB' è stata completata. Il database clonato è 'TEST_TEMPDB2'.
Il database 'TEST_TEMPDB2' è un database clonato. Questo database deve essere usato solo per scopi diagnostici e non è supportato per essere usato in un ambiente di produzione.
Esecuzione DBCC completata. Se sono stati visualizzati messaggi di errore DBCC, rivolgersi all'amministratore di sistema.


Ora avete due database! Comodo o no!

Se ci fare caso però il database di destinazione è in sola lettura e nel messaggio restituito è presente una avvertenza:

Questo database deve essere usato solo per scopi diagnostici e non è supportato per essere usato in un ambiente di produzione.

Per togliere il database dalla sola lettura andate nelle opzioni del database e mettete nella voce database di sola lettura FALSE.



Alla prossima!

Luca Biondi @ SQLServerPerformance blog!








Next post: SQL Server 2019 RC1 e la "Resumable Online Index Creation"

Previous post: SQL Server 2019 RC1 a proposito di "Online clustered columnstore index build and rebuild" (parte 2)

Comments

I Post più popolari

SQL Server, execution plan and the lazy spool (clearly explained)

SQL Server, datetime vs. datetime2

La clausola NOLOCK. Approfondiamo e facciamo chiarezza!