Domanda

Ho un numero di file .sql che devo eseguire per applicare le modifiche apportate da altri sviluppatori su un database SQL Server 2005. I file sono denominati secondo il seguente modello:

0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...

C'è un modo per gestirli tutti in una volta?

È stato utile?

Soluzione

Crea un file .bat con il seguente comando:

for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause

Inserisci questo file .bat nella directory da cui si desidera eseguire i file .sql, fare doppio clic sul file .bat e hai finito!

Altri suggerimenti

Uso PER. Dal prompt dei comandi:

c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
  1. Nel SQL Management Studio Apri una nuova query e digita tutti i file come di seguito

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  2. Vai al menu Query su SQL Management Studio e assicurati che la modalità SQLCMD sia abilitata
  3. Fare clic sulla modalità SQLCMD; i file verranno selezionati in grigio come di seguito

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  4. Ora esegui

Assicurati di avere SQLCMD abilitato facendo clic sull'opzione Modalità query> SQLCMD nello studio di gestione.

  1. Supponiamo di avere quattro file .sql (script1.sql,script2.sql,script3.sql,script4.sql) in una cartella c:\scripts.

  2. Crea un file di script principale (main.sql) con quanto segue:

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    :r c:\Scripts\script4.sql
    

    Salva il main.sql in C: Scripts stesso.

  3. Crea un file batch chiamato ExecuteScripts.bat Con quanto segue:

    SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
    PAUSE
    

    Ricorda di sostituire <YourDatabaseName> Con il database si desidera eseguire i tuoi script. Ad esempio, se il database è "dipendente", il comando sarebbe il seguente:

    SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
    PAUSE
    
  4. Eseguire il file batch facendo doppio clic sullo stesso.

Potresti usare ApexSQL Propagate. È uno strumento gratuito che esegue più script su più database. Puoi selezionare tutti gli script di cui hai bisogno ed eseguirli su uno o più database (anche più server). È possibile creare un elenco di script e salvarlo, quindi basta selezionare quell'elenco ogni volta che si desidera eseguire quegli stessi script nell'ordine creato (è possibile aggiungere anche più elenchi di script):

Select scripts

Quando vengono selezionati script e database, verranno visualizzati nella finestra principale e tutto ciò che devi fare è fare clic sul pulsante "Esegui" e tutti gli script verranno eseguiti su database selezionati nell'ordine dato:

Scripts execution

Domanda generale

Salva le righe seguenti nel blocco note con il nome batch.bat e posizionare all'interno della cartella in cui ci sono tutti i tuoi file di script

 for %%G in (*.sql) do sqlcmd /S servername /d databasename  -i"%%G"
    pause

ESEMPIO

per %% G in (*.sql) do sqlcmd /s NFGDDD23432 /d EmbleaEedB -i pausa

qualche volta se l'accesso non è riuscito, si prega di utilizzare il codice seguente nome utente e parola d'ordine

for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause

per %% G in (*.sql) do sqlcmd /s NE8148server /d EmbleaEedB -U Scott -P tigre -i pausa

Dopo aver creato il file BAT all'interno della cartella in cui i file di script ci sono basta fare clic sul file BAT, i tuoi script verranno eseguiti

scrissi un'utilità open source In C# che ti consente di trascinare e rilasciare molti file SQL e iniziare a eseguirli contro un database.

L'utilità ha le seguenti caratteristiche:

  • Trascinare e rilasciare i file di script
  • Esegui una directory di file di script
  • Script SQL OUT Metti i messaggi durante l'esecuzione
  • Script Pass o non fallito che sono colorati verdi e rosso (giallo per la corsa)
  • Opzione Stop on Errore
  • Apri lo script sull'opzione di errore
  • Esegui il rapporto con il tempo preso per ogni script
  • Tempo di durata totale
  • Test DB Connection
  • Asynchronus
  • .NET 4 e testato con SQL 2008
  • Singolo file exe
  • Uccidi la connessione in qualsiasi momento

Quello che so che puoi utilizzare i comandi OSQL o SQLCMD per eseguire più file SQL. Lo svantaggio è che dovrai creare uno script per entrambi i comandi.

Utilizzo di SQLCMD per eseguire più script SQL Server

OSQL (questo è per SQL Server 2000)

http://msdn.microsoft.com/en-us/library/aa213087(v=sql.80).aspx

@echo off
cd C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE

for %%a in (D:\abc\*.sql) do (
echo %%a
mysql --host=ip --port=3306 --user=uid--password=ped < %%a
)

Step1: le righe sopra copia nel pad note salvalo come pipistrello.

Step2: nella cartella A ABC Drive in tutti i file SQL nelle query eseguite in SQL Server.

Passaggio3: fornire il tuo IP, ID utente e password.

Puoi creare un singolo script che chiama tutti gli altri.

Metti i seguenti in un file batch:

@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"

Quando esegui quel file batch creerà un nuovo script denominato all.sql Nella stessa directory in cui si trova il file batch. Cercherà tutti i file con l'estensione .sql Nella stessa directory in cui si trova il file batch.

È quindi possibile eseguire tutti gli script utilizzando sqlplus user/pwd @all.sql (o estendere il file batch per chiamare sqlplus Dopo aver creato il all.sql script)

Per l'esecuzione di ogni SQLFILE sulla stessa directory, utilizzare il comando seguente:

ls | awk '{print "@"$0}' > all.sql

Questo comando creerà un singolo file SQL con i nomi di ogni file SQL nella directory aggiunta da "@".

Dopo il all.sql è creato semplicemente eseguire all.sql Con SQLPlus, questo eseguirà ogni file SQL nel all.sql.

If you can use Interactive SQL:

1 - Create a .BAT file with this code:

@ECHO OFF ECHO
for %%G in (*.sql) do dbisql -c "uid=dba;pwd=XXXXXXXX;ServerName=INSERT-DB-NAME-HERE" %%G
pause

2 - Change the pwd and ServerName.

3 - Put the .BAT file in the folder that contains .SQL files and run it.

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