Esiste un uomo povero & # 8221; alternativa a RedGate per lo scripting dell'intero schema del database? [chiuso]

StackOverflow https://stackoverflow.com/questions/169107

Domanda

Sono in una situazione in cui vorrei generare uno script per un database che potrei eseguire su un altro server e ottenere un database identico a quello originale, ma senza alcun dato. In sostanza, voglio finire con un grande script di creazione che catturi lo schema del database.

Sto lavorando in un ambiente in cui è installato SQL Server 2000 e non riesco a installare gli strumenti client 2005 (nel caso in cui possano essere d'aiuto). Non posso permettermi RedGate, ma vorrei davvero avere un database con lo stesso schema su un altro server.

Qualche suggerimento? Sarebbe molto apprezzato qualsiasi semplice strumento .exe (nessuna installazione richiesta), suggerimenti o trucchi T-SQL.

Aggiornamento: il database con cui sto lavorando ha oltre 200 tabelle e diverse relazioni e vincoli di chiave esterna, quindi lo scripting manuale di ogni tabella e l'incollaggio insieme dello script non è un'opzione praticabile. Sto cercando qualcosa di meglio di questa soluzione manuale

Aggiornamento aggiuntivo A meno che non mi manchi completamente qualcosa, questa non è una soluzione praticabile utilizzando gli strumenti di SQL 2000. Quando seleziono l'opzione per generare uno script di creazione su un database. Finisco con uno script che contiene un comando CREATE DATABASE e non crea nessuno degli oggetti - le tabelle, i vincoli, ecc. Anche lo Studio di gestione di SQL 2005 può gestire gli oggetti, ma il database si trova in un ambiente dove non c'è modo per me collegare un'installazione di Management Studio ad esso.

È stato utile?

Soluzione

Esegui SQL Server Management Studio, fai clic con il pulsante destro del mouse sul database e seleziona Script Database come > Crea in > file

Questo è per SQL Server 2005. SQL Server 2000 Enterprise Manager ha un comando simile. Basta fare clic con il tasto destro sul database > Tutte le attività > Genera script .

EDIT: in SQL Server 2005, puoi selezionare " Database " nel riquadro Esplora oggetti e selezionare diversi database nel riquadro dei dettagli. Quindi, fai clic con il pulsante destro del mouse sulla tua selezione e " Script Database come > Crea in > depositare " ;. Questo lo farà mettere tutti in uno script e includerà tutte le tabelle, le chiavi, le procedure memorizzate e i vincoli.

Altri suggerimenti

Quindi, suppongo che non sia possibile installare SQL Server Management Studio. Neanche la versione gratuita. Se questa è una cosa una volta, installerei gli strumenti del cancello rosso. La versione di prova è perfettamente funzionante per 14 giorni. Fai il tuo lavoro, quindi disinstalla. Puoi anche dare un'occhiata a http://www.xsqlsoftware.com/ , hanno funzioni simili a Red Gate. Se il tuo database è piccolo, hanno un'opzione gratuita per te. Mi piace anche http://www.apexsql.com/ . Usa la versione di prova di uno di questi e poi riprova a convincere il tuo capo ad acquistarne uno.

Oltre alle risposte di cui sopra, vorrei suggerire che (almeno per i progetti futuri) non hai la progettazione del database principale nel database stesso.

Un modo per raggiungere questo obiettivo è semplicemente mantenere le tabelle del database, le procedure, ecc. come script "CREATE" dal primo giorno e ideare uno script master che riunirà tutti i singoli script per la distribuzione in un database di tua scelta .

Una soluzione più sofisticata consiste nell'utilizzare qualcosa come Visual Studio Database Edition (probabilmente troppo costoso, se i tuoi commenti sono qualcosa da passare) che ti consente di trattare ogni oggetto del database come un nodo in un progetto, pur consentendo l'intero cosa da distribuire con pochi clic.

La spiegazione di entrambe queste opzioni è troppo semplificata, poiché ci sono molti altri problemi - controllo delle versioni, migrazione dei dati ecc. - ma il principio principale è lo stesso.

Dopo aver estratto il tuo script - usando una delle altre risposte - potresti prendere in considerazione l'uso di questo script come base per il tuo "master".

Tieni semplicemente il 'design' fuori dal database - è puramente per 'implementazioni'.

Prova a pensare al processo come allo sviluppo del codice: l'origine e i binari sono tenuti separati, con quest'ultimo generato dal primo.

Ho usato questo programma da CodeProject con successo molte volte prima. Non solo esegue lo script dello schema, ma può (facoltativamente) eseguire lo script di tutte le istruzioni INSERT necessarie per ricreare il database.

L'ho usato contro SQL Server 2000 in passato. Ovviamente se hai un milione di righe in una tabella potrebbe non essere una buona idea scrivere il contenuto, ma in realtà è uno strumento davvero accurato per creare una serie di script SQL per replicare un database.

Se si tratta di un'operazione una tantum e non hai voglia di ordinare tu stesso gli script degli oggetti scarica una versione di prova gratuita di RedGate SQL Compare .

È una versione completa di 14 giorni, quindi farà tutto il lavoro per te - è una soluzione completamente legittima. E avrai tutti gli script per l'uso futuro con i tuoi script manuali. Ad ogni modo, sono abbastanza sicuro che se scoprirai quanto è utile lo strumento, lo comprerai in una fase successiva ed è quello che probabilmente sperano offrendo una prova completamente funzionante. In qualche modo ha funzionato in questo modo nel mio caso.

Tieni presente che una volta scaduto il periodo di prova influisce su tutti gli strumenti, quindi assicurati di sfruttarlo al meglio.

Michael Lang, quando fai clic con il pulsante destro del mouse sul database e scegli di creare uno script, ci sono diverse caselle di opzioni che dovrai fare clic per poter generare tutto. Il 2005 è molto più semplice in questo senso, ma 2000 può farlo, devi solo selezionare le opzioni appropriate.

Se stai cercando una versione da riga di comando, Sql Server Hosting Toolkit ha funzionato per me in passato.

Procedura guidata per la pubblicazione di database Microsoft (in Visual Studio 2008).

Come menzionato in SQL Server 2000 il comando da utilizzare è:

Mentre sei in Enterprise Manager seleziona il database dal quale vuoi eseguire lo script degli oggetti, quindi fai clic con il tasto destro e seleziona Tutte le attività - > Genera script SQL ...

Mentre sei nel riquadro Opzioni è utile selezionare l'opzione Crea un file per oggetto in questo modo puoi archiviare ogni oggetto nel controllo del codice sorgente separatamente.

Quindi ogni volta che esegui alcuni aggiornamenti su una tabella A puoi verificarlo nel controllo del codice sorgente per far sapere agli altri che ci stai lavorando e dopo che hai finito puoi scrivere lo script su quel singolo oggetto e salvare archiviarlo.

Per eseguire lo script di un singolo oggetto puoi utilizzare la stessa opzione Tutte le attività - > Genera script SQL ... e seleziona solo quell'oggetto.

L'unico problema con questo approccio è quando si desidera ripristinare l'intero database, è necessario occuparsi degli oggetti dipendenti, nel senso che l'oggetto di livello superiore deve essere ripristinato prima di quelli dipendenti da essi.

Ironia della sorte, quando si esegue lo script dell'intero database su un file, gli oggetti non sono ordinati in termini di dipendenza ma piuttosto in base alla data di creazione. Ciò provoca errori quando si tenta di utilizzarlo per ripristinare il DB completo.

Abbiamo finito per creare un file batch che avrebbe creato ogni oggetto separatamente chiamando " osql "

E tutto funzionava abbastanza bene in quel momento

Ora utilizziamo SQLCompare Pro e ci salva da o che seccatura, ma se non rilasci frequentemente puoi vivere senza di essa.

Gli altri sono corretti, ma per creare un database completo da zero, è necessario creare un "dispositivo" in SQL prima di eseguire le tabelle di creazione e gli script delle procedure ...

Usa ADODB, dal momento che quasi ogni (se non ogni) finestra di Windows è installata per eseguire lo script.

Inferno, potresti persino scrivere un vbScript che viene eseguito per costruire l'intero database. Tutte le tabelle di dominio che hai, devi ricordare di attivare l'inserimento identità prima di aggiungere gli elementi al DB.

Sono aperto alla condivisione del codice sorgente se ne hai bisogno. Ho dovuto scrivere la stessa cosa un paio di anni fa e ho finito con 3 script, uno che ha creato il dispositivo, quindi le tabelle, quindi le procedure / i trigger e i dati del dominio. Ho scritto il codice per analizzare lo script predefinito e consentire all'utente di nominare il proprio database, i login e così via. Potrebbe non essere necessario andare così lontano.

Spero che questo aiuti a tutti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top