Script dell'intero database SQL-Server


95

Esiste un modo per ottenere uno scripting di tutte le tabelle, proc e altri oggetti da un database? So che esiste un'opzione per eseguire lo script del database, ma mi ha fornito solo una sorta di script di livello superiore, certamente non uno script per creare tutte le tabelle, procs, udfs, .etc.


6
Lo ha etichettato come SQL Server 2008, quindi presumo sia quello che sta usando.
Colin Mackay

1
Non si suppone di andare su serverfault.com?
Salamander2007

Risposte:


163

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

Dovrebbe bastare.


2
Un'altra opzione è quella di utilizzare SQL SMO e di eseguirne lo script in modo programmatico (cioè se è richiesto uno scripting regolare)
RobS,

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

@ Joe, mi dirigerei lungo la strada 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.
Chris Brandsma

7
Per impostazione predefinita, non esegue lo script dei dati. In Opzioni tabella / visualizzazione selezionare "Dati script -> Vero". Un'altra opzione utile è "Script Drop -> True"
Stephen Hosking

1
Lo script generato non conterrà alcuna informazione sulle regole di confronto delle colonne, a meno che tu non abbia scelto l'ultima opzione nel menu Extra> Opzioni> Generazione script. In tedesco, l'opzione è "Sortierung einschließen". Anche la maggior parte di queste opzioni sono incluse nella procedura guidata che genera lo script, questa non lo è (SQL Server 2008). Devi davvero selezionare l'opzione prima di chiamare la procedura guidata.
Olivier Faucheux

14

Ho scritto un'utilità della riga di comando open source denominata SchemaZen che fa questo. È molto più veloce dello scripting da Management Studio e il suo output è più intuitivo per il controllo della versione. Supporta lo scripting di schemi e dati.

Per generare script eseguire:

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

Quindi per ricreare il database dagli script eseguire:

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

Ciao, voglio ottenere la QUERY SQL dal mio database locale creato in Visual Studio, come posso farlo con questo strumento? Devo usare la direzione del file .sdf o come? Grazie.
Karlo A. López

È un file SQL DataBase compatto.
Karlo A. López

1
HOLY CRAP QUESTO È VELOCE E FANTASTICO.
ConstantineK

1
@hobs sono contento che tu l'abbia trovato utile. : D
Seth Reno

1
@SethReno ha corrotto gli indici sys sul mio db = SMO non può scrivere nulla, il tuo script sì, quindi in pratica mi ha risparmiato un sacco di tempo manualmente facendo schifezze. A proposito, reverse engineering incredibilmente veloce di tutto, come 1000 volte più veloce di SSMS e sembra più veloce di SMO da solo (non da ultimo a causa del tempo di avvio).
ConstantineK

4

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

La generazione di script viene eseguita dalla libreria SMO e supporta i nuovi tipi di oggetti in SQL 2005 e 2008.


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

3

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

Perché?

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

Script di esempio (modificato 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

1

Consiglio di guardare RedGate SQL packager. Non è gratuito, ma è stato abbastanza utile da valerne il prezzo.


1

Guardando solo i dati della tabella, per visualizzare tutto il contenuto dei dati della tabella in Management Studio 2012 e 2014, è un po 'nascosto ma ho trovato l'opzione dopo aver cercato:

  1. Fare clic con il tasto destro del mouse sul file db
  2. Seleziona "Attività"> "Genera script ..."
  3. In "Imposta opzioni di scripting", fai clic su "Avanzate"
  4. In "Generale", imposta "Tipi di dati su script" su true (si trova nella parte inferiore del gruppo "Generale")

0

Se è necessario farlo a livello di programmazione, è possibile utilizzare la libreria SQL DMO (OLE) con SQL Server 2000, ma è più probabile che si desideri utilizzare la libreria SQL SMO (librerie .NET native) con SQL Server 2005 e versioni successive.

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

Questo è il caso in cui la generazione dello script completo del database da SQL Server Management Studio non è sufficiente.

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.