Copia Tabelle o intera struttura db da Db esistente

di il
13 risposte

Copia Tabelle o intera struttura db da Db esistente

Salve,
Ho provato in diversi modi ma oltre all'elenco con "create in" minuzionso di ogni tabella e campo non trovo un metodo valido per copiare un'intera struttura di database via script SQL da integrare in routine vb.net.ùFaccio un esempio
ho un db con il nome MIo2020 e dentro tabella a,b,c,d,e, e cosi via
vorrei creare medfiante script la copia della struttura e non dei contenuti in modo da creare un db con nome diverso esempio
Mio2021 ma con le stesse tabelle a,b,c,d,e, e cosi via, ovviamente il database dovra essere operativo al 100 %, dico questo perche l'ultima mia prova è stata questa DBCC CLONEDATABASE (G2020,G2021) WITH VERIFY_CLONEDBm dove però il db risultava in sola lettura e il nome nella cartella .....MSSQL\DATA\ era n derivato e non corrispondeva al G2021.
Grazie in anticipo e Buon Anno

13 Risposte

  • Re: Copia Tabelle o intera struttura db da Db esistente

    pieroalampi ha scritto:


    ...
    vorrei creare medfiante script la copia della struttura e non dei contenuti in modo da creare un db con nome diverso esempio
    Mio2021 ma con le stesse tabelle a,b,c,d,e, e cosi via, ovviamente il database dovra essere operativo al 100 %
    ...
    Ciao,
    secondo me non sarebbe male esplicitare meglio il contensto, per esempio,

    vuoi creare il db sulla stessa instanza di sqlserver?
    stesse utenze ?
    e non da ultimo , perchè ti serve fare questa cosa ?

    HTH
  • Re: Copia Tabelle o intera struttura db da Db esistente

    Buongiorno,
    Allora in ordine rispondo a tutti e ringrazio in anticipo:
    i creare il db sulla stessa instanza di sqlserver? si stessa istanza
    stesse utenze ? si stesse utenze
    e non da ultimo , perchè ti serve fare questa cosa ? non è importante visto che non è solo una scelta tecnica ma anche politica aziendale, serve nella stessa istanza quindi stesso server con gli stessi accessi un db identico, diverso solo nel nome, allo stesso modo in un secondo momento verranno popolate le tabelle con solo alcuni record dal vecchio db e il resto partirà da zero, il fatto è che va fatto cosi e vorrei evitare di creare ogni singolo campo dal vecchio al nuovo, ma effettuare un operazione diciamo massiva e rapida.
    Grazie mille
  • Re: Copia Tabelle o intera struttura db da Db esistente

    Mah ...
    se hai gli script per la creazione di tutti gli oggetti , puoi eseguirli tramite l'utility sqlcmd ;

    oppure fai :
    - backup di solo copia ( hai la struttura aggiornata al momento del backup)
    - restore
    - cancellazione dei dati in più

    ( per una cancellazione veloce puoi anche disabilitare le constraint ed usare truncate table ... poi le devi riabilitare ovviamente)

    Gli script li puoi adattare facilmente al nome del nuovo db

    DBCC CLONEDATABASE , che non conoscevo per cui non ci metto la mano sul fuoco, sembrerebbe più adatto
    per scopi di diagnosi che altro perchè dalla guida on line leggo

    "Genera un clone solo schema di un database tramite DBCC CLONEDATABASE
    per esaminare i problemi di prestazioni relativi a Query Optimizer"


    ma se ti va bene puoi provare a riportarlo in read/write;
    il comando DDL dovrebbe essere qualcosa tipo

    ALTER DATABASE [TESTDB] SET READ_WRITE WITH NO_WAIT

    EDIT
    Ovviamente devi poter eseguire il tutto con un0utenza che ha gli opportuni permessi

    HTH
  • Re: Copia Tabelle o intera struttura db da Db esistente

    Ok ma sicuramente DBCC CLONEDATABASE è per scopi diagnostici, di fatto anche il file prende un nome diverso e non come quello realmente assegnato, quinid genererebbe confusione, allora dopo alcune prove ho deciso di mollare questa procedura il restore mi chiedo come gestirlo, faccio qualche prova se non rimane alcuna soluzione alternativa, speravo di trovare una soluzione tipo dbcc ma adatto per la produzione e non solo per scopi diagnostici.
    ccomunque grazie
  • Re: Copia Tabelle o intera struttura db da Db esistente

    pieroalampi ha scritto:


    ... anche il file prende un nome diverso
    ...
    ... guarda che puoi cambiare pure quello se ti da fastidio.

    P.S.
    Ma di quanti giga di dati e di log stiamo parlando ?
  • Re: Copia Tabelle o intera struttura db da Db esistente

    Ora sto cercando di creare un db semplicemente con CREATE DATABASE e succesivamente popolandolo con le tabelle del precedente ma anche qui chiedo se esiste un metodo per copiare la struttura intera del precedente ?
  • Re: Copia Tabelle o intera struttura db da Db esistente

    sspintux ha scritto:


    pieroalampi ha scritto:


    ... anche il file prende un nome diverso
    ...
    ... guarda che puoi cambiare pure quello se ti da fastidio. se tutto in uno script, mi dai una dritta?

    P.S.
    Ma di quanti giga di dati e di log stiamo parlando ? Non importa i giga o altro questa decisione deriva da una serie di fattori non più discutibili in fase di programmazione, è stato deciso cosi e quindi va creato il nuovo DB, ora o manualmente o via script cosi va fatto.
  • Re: Copia Tabelle o intera struttura db da Db esistente

    Va beh ... chiedevo i giga per avere un'idea dei tempi
    e se creare questo nuovo db con backup/restore o tramite esecuzione di script
    generati e modificati dal precedente db ;

    ... ma se non vuoi/puoi rispondere va bene cosi'.

    Mi sembra di averti dato più di un suggerimento.

    Ci sono anche librerie a pagamento ( per esempio redgate)
    che sicuramente ti faciliterebbero la vita

    Ciao
  • Re: Copia Tabelle o intera struttura db da Db esistente

    Non è che non ti voglio rispondere e che anche se volessi non potrei cambiare nulla su questa scelta, quindi è tempo perso analizzare questa cosa, per il resto ti rinmgrazio ma siamo a punto zero tranne per le librerie che a prescindere non vanno bene perche bisognerebbe stare dietro a fornitore di terze parti e non è previsto, avrei voluto creare qualcosa di diverso vediamo se trovo qualcosa, per ora grazie mille.
    PS:dimenticavo per gli script vorrebbe dire che ogni volta che si andrebbe a modificare la struttura del db bisognerebbe riqualificare lo script per intero ed è quello che si voleva evitare.
    tipo un CREATE TABLE `new_table_name` SELECT * FROM `old_table_name` e prima creare il db ma sembra funzioni solo in mysql
  • Re: Copia Tabelle o intera struttura db da Db esistente

    pieroalampi ha scritto:


    Non è che non ti voglio rispondere e che anche se volessi non potrei cambiare nulla su questa scelta, quindi è tempo perso analizzare questa cosa
    backup ( di sola copia) , restore e cancellazione
    non ti serve nessuna libreria
    e con vb.net e/o sqlcmd puoi automatizzare tutto se hai un account di tipo amministrativo
  • Re: Copia Tabelle o intera struttura db da Db esistente

    sspintux ha scritto:


    pieroalampi ha scritto:


    Non è che non ti voglio rispondere e che anche se volessi non potrei cambiare nulla su questa scelta, quindi è tempo perso analizzare questa cosa
    backup ( di sola copia) , restore e cancellazione
    non ti serve nessuna libreria
    e con vb.net e/o sqlcmd puoi automatizzare tutto se hai un account di tipo amministrativo
    ok grazie provo, grazie mille
  • Re: Copia Tabelle o intera struttura db da Db esistente

    pieroalampi ha scritto:


    ok grazie provo, grazie mille
    occhio se hai stored, view o altro con oggetti esplicitati con il nome del db
    ( esempio select * from Miodb2020.dbo.tab1 ....)
    perchè di fatto useresti sempre il 'vecchio' db anche se sei nel 'nuovo'
  • Re: Copia Tabelle o intera struttura db da Db esistente

    Ok grazie ottimo
Devi accedere o registrarti per scrivere nel forum
13 risposte