2009-07-21 22 views
85

C'è un modo per ottenere uno script di tutte le tabelle, proc e altri oggetti da un database? So che c'è un'opzione per creare script del database ma mi ha dato solo una sorta di script di primo livello, certamente non uno script per creare tutte le tabelle, procs, udfs, ecc.Script intero database SQL-Server

+0

Quale versione di SQL Server? – MyItchyChin

+5

Ha etichettato SQL Server 2008, quindi presumo che sia quello che sta usando. –

+1

Non è necessario andare su serverfault.com? – Salamander2007

risposta

143

Da Management Studio Fare clic con il tasto destro del mouse sul proprio database. Attività -> Genera script.

Che dovrebbe farlo.

+2

Un'altra opzione è usare SQL SMO e scriverlo in modo programmato (vale a dire se è richiesto lo scripting regolare) – RobS

+0

C'è un modo per impostare uno script per fare in modo che le impostazioni siano sempre le stesse, indipendentemente da chi lo esegue? Prevedo che le persone del nostro team di sviluppo sovrascrivano questo file con impostazioni diverse ogni volta ... –

+0

@Joe, vorrei andare lungo la rotta di cui parla RobS. Dovresti essere in grado di farlo con PowerShell. Altrimenti inizia a guardare gli strumenti RedGate o Visual Studio Team Systems con Database Developer. –

0

Se avete bisogno di fare a livello di codice, è possibile utilizzare la libreria di SQL DMO (OLE) in SQL Server 2000, ma più probabilmente si potrebbe desiderare di utilizzare la libreria di SQL SMO (librerie native .NET) contro SQL Server 2005 e dopo.

Entrambe queste librerie sono parte integrante dell'installazione degli strumenti di amministrazione di SQL Server.

Questo è nel caso in cui la generazione dello script di database completo da SQL Server Management Studio è insufficiente.

1

Mi raccomando guardando RedGate SQL packager. Non è gratuito, ma è stato abbastanza utile per valere il prezzo.

4

Ho scritto un'utilità per questa attività, SMOscript.

generazione di script viene eseguito dalla libreria SMO, e supporta i nuovi tipi di oggetto in SQL 2005 e il 2008.

+0

Hmm Ho installato la tua app Smo sul mio Vista 64-bit. Installazione riuscita ma non vedo un elemento nella directory del programma o nell'elenco Tutti i programmi – PositiveGuy

+0

È uno strumento da riga di comando – devio

3

Abbiamo finito per usare una combinazione di SSMS generazione script per estrarre schemi e dati, e quindi utilizzare il nostro strumento di database che consente l'analisi delle parole chiave e la sostituzione basata su token negli script. Garantisce inoltre che gli script vengano applicati solo una volta.

Perché?

  • Abbiamo bisogno di supportare installazioni su SQL Server 2000, 2005 e 2008 e ci sono modifiche ai tipi di dati tra le versioni, ad es. 2005+ hanno nvarchar (max), mentre 2000 supporta solo ntext. Quindi i nostri script utilizzano un token e in base alla scelta del db sostituiscono il tipo corretto.
  • L'esecuzione di alcuni script richiede un periodo di attesa dopo l'esecuzione, ad es. Abbiamo scoperto che se non si attendono alcuni secondi dopo la creazione di un nuovo database tramite uno script, a volte SQL Server potrebbe non riuscire (poiché non ha avuto il tempo di creare i file db) quando ha continuato a creare tabelle, ecc.
  • Volevamo mantenere una cronologia di quali script sono stati eseguiti e quando.
  • Volevamo consentire al nostro programma di installazione MSI Wix di specificare la stringa di connessione e le credenziali, e aveva bisogno di un modo per trasferirli negli script, quindi ancora una volta, usando i token e qualche logica condizionale.

Esempio di script (a cura per brevità)

-- Sleep: 5 
-- Sleep after creating database to allow file system to create db files 
CREATE DATABASE [$Database$] 
GO 

EXEC sp_dbcmptlevel [$Database$], $CompatabilityLevel$ 
GO 

USE [$Database$] 
GO 

IF '1'!='$IntegratedSecurity$' 
BEGIN 
    CREATE LOGIN [$Login$] WITH PASSWORD=N'$Password$', DEFAULT_DATABASE=[$Database$] 
    CREATE USER [$User$] FOR LOGIN [$Login$] 
    EXEC sp_addrolemember N'db_owner', N'$User$' 
END 
GO 
11

ho scritto un'utility a riga di comando open source chiamato SchemaZen che fa questo. È molto più veloce dello scripting da parte di Management Studio e il suo output è più adatto al controllo della versione. Supporta lo scripting di schemi e dati.

per generare script eseguiti:

schemazen.exe script --server localhost --database db --scriptDir c:\somedir

Poi per ricreare il database da eseguire script:

schemazen.exe create --server localhost --database db --scriptDir c:\somedir
+0

Salve, voglio ottenere SQL QUERY dal mio database locale creato in Visual Studio, come posso farlo con questo strumento? Devo usare la direzione del file .sdf o come? Grazie. –

+0

È un file SQL DataBase compatto. –

+0

@ KarloA.López SQL Server Compact non è attualmente supportato. Tuttavia, non dovrebbe essere troppo difficile aggiungere supporto, quindi se invii una richiesta di funzionalità probabilmente verrà eseguita abbastanza rapidamente. È possibile creare una richiesta di funzionalità qui https://github.com/sethreno/schemazen/issues/new –

1

Basta guardare i dati della tabella, per emettere tutti i contenuti dati della tabella in Management Studio 2012 e 2014, è un po 'nascosto ma ho trovato l'opzione dopo qualche ricerca:

  1. Fare clic con il pulsante destro del mouse db
  2. Seleziona 'Operazioni'> 'generare script ...'
  3. su 'Opzioni di scripting set', fare clic su 'Avanzate'
  4. Sotto 'Generale', set 'Tipi di dati di script' a true (è nella parte inferiore del gruppo "Generale")
Problemi correlati