Qual è il modo più efficace per duplicare un'istanza su SQL 2008?


14

Abbiamo una semplice istanza di database con abbastanza dati nei database per tenerlo utile e possiamo usarlo a scopo dimostrativo e voglio metterne una copia sul mio laptop in modo da poterlo usare per il lavoro di sviluppo quando Non sono in ufficio. (Le normali istanze del database di sviluppo sono circa 150 GB, questa istanza è 3 GB)

Qual è il metodo più ripetibile / programmabile per ricreare l'istanza sul mio laptop? Sono sicuro che dovrò eseguire nuovamente il programma di installazione per SqlServer2008 e configurare un'istanza, ma dopo ciò ... Sto pensando di voler eliminare i miei vecchi database ogni mese o giù di lì e copia tutte le nuove cose sul mio laptop, poiché la mia istanza non cambierà né sul sistema demo né sul laptop. Ma i database stessi si aggiorneranno, con aggiornamenti sugli sprocs e simili.

Ho preso in considerazione lo scripting di tutti i "file di database di drop; aggiungi file di database {path}" e li ho tenuti in un file batch eseguibile di qualche tipo, e quindi posso "rilasciare, eliminare, copiare, aggiungere" ma mi chiedevo se ci era un modo migliore di solo xcopy e batch?

Sto cercando di farlo a basso costo (non cerchiamo sempre di fare cose a buon mercato), quindi non sono particolarmente interessato ai prodotti RedGate o simili. Voglio qualcosa che posso mantenere facilmente in un editor di testo per me stesso.


è un singolo database o un'istanza del server sql con più di un database? Presumo che tu abbia installato sql server nel tuo laptop e macchina di sviluppo e tu abbia un database, in quel caso puoi usare il backup e il ripristino. Backup macchina di sviluppo db, copia su laptop e ripristino, viceversa ... ha senso?
CoderHawk

è SQL Server Express Edition? o standard? SSIS è una buona opzione per scenari come questo, purtroppo non è disponibile nelle versioni Express e Web.
CoderHawk

Siamo spiacenti @Sandy ~ È SQL Dev 2008. Ho accesso a praticamente tutto ciò che si può immaginare, grazie a MSDN.
jcolebrand

Il titolo della domanda è poco confuso "Qual è il modo più efficace per duplicare un'istanza | su SQL 2008?" - istanza o database?
CoderHawk

@Sandy ~ "Instance" ... anzi, voglio tutto.
jcolebrand

Risposte:


4

Hai colpito l'unghia sulla testa: copia i file. L'ho usato con buoni risultati.

Direi che devi definire "economico" per includere l'investimento di tempo per preparare una soluzione che non implichi xcopy


3

Umm, non sono sicuro se questo aiuta, ma stiamo usando una serie di script per "ripulire" un database di produzione e prepararlo per abusi di sviluppo. Stiamo prendendo tutte le grandi tabelle che hanno una colonna datetime e stiamo ricostruendo la tabella con solo l'ultimo anno di dati. Da un db completo di circa 200 GB arriviamo a circa 40 GB db per lo sviluppo. Principalmente stiamo generando script dinamici per creare file bcp per ogni tabella, ricreare la tabella (inclusi eventuali vincoli correlati) e quindi inserire in blocco solo i dati dell'anno scorso.

Forse ci sono strumenti per farlo, ma il nostro negozio costa poco :-).


Sì, seguiamo il percorso BCP per molte cose, quindi ottengo quello che stai dicendo e troncare alcuni di questi sarebbe buono, ma ho già circa 3 GB di dati di cui ho bisogno, quindi non sono davvero cercando di aggiungere altro lì. Voglio solo copiare l'intera istanza e capire che c'è un modo per continuare a farlo ripetutamente. Ma per il resto penso di essere sulla stessa rotta di quello di cui stai parlando, solo un sacro più piccolo.
jcolebrand

Quindi ripeti tutti i passaggi in batch :). SQL ha parametri batch e puoi combinare file batch con file sql e ottenere un bel pacchetto. Ho creato un pacchetto Log Shipping (dumb) personalizzato che funziona su domini diversi e tutta la preparazione del db viene eseguita in file cmd / sql. È possibile creare un'istanza denominata solo per uso personale e lì avviare / arrestare il servizio, ripristinare il db, pulirlo, prepararlo, eseguirne il backup e spedirlo in una cartella specifica. Forse un po 'di lavoro potrebbe essere svolto più velocemente in PowerShell .. ma non ne ho familiarità.
Marian

sì, questa è l'idea;)
jcolebrand

@jcolebrand - Forse uno strumento come Norton Ghost o Clonezilla sarebbe d'aiuto? Ne avresti bisogno per copiare le cartelle di backup prod da qualche parte sul tuo terreno di gioco, quindi tornare lì per fare tutto il divertimento (restore..trim ... ecc). Non avresti bisogno di scrivere le azioni di copia e gestirai solo la parte sql :).
Marian

oooooh potrebbe essere utile. Nuove vie di considerazione.
jcolebrand

0

Il modo più semplice per aggiornare lo schema in modo che corrisponda a tali sistemi è utilizzare uno strumento come Red Gate SQL Compare o Embarcadero DB Change Manager.

Ci sono un sacco di altri strumenti disponibili che probabilmente possono fare lo stesso confronto di schemi e persino fornire il DDL per aggiornare lo schema del database.

Opzioni

  1. Utilizzare uno strumento di terze parti
  2. Backup e ripristino del database: potrebbe essere necessario ripristinare un'istanza di gestione temporanea per eliminare i dati (a causa delle restrizioni di spazio sul laptop)
  3. Scrivi il tuo scripter di database usando SMO e crea semplicemente un lavoro che script gli oggetti, quindi ricrea il tuo schema ogni mese / volta che ne hai bisogno, quindi usa SSIS per caricare i dati nei nuovi oggetti.

Come funziona "Backup e ripristino del database" per l'istanza? Io voglio mantenere i dati in queste tabelle, perché è un set di dati completo, appena più piccolo di produzione.
jcolebrand

SSIS probabilmente mi lascerebbe fare ciò di cui ho bisogno, ma non ne so abbastanza. Dovrei indagare ulteriormente.
jcolebrand

@jcolebrand - Ho suggerito il ripristino del backup, semplicemente dovrei considerare come spostare i dati dal tuo sistema live al tuo sistema demo quando fai cose come l'aggiunta di colonne. Ciò presenta tuttavia l'inconveniente che richiede un ripristino, quindi l'eliminazione dei dati prima di un altro backup e il ripristino / scollegamento e collegamento.
johndacostaa,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.