Esegui tutti i file SQL in una directory
-
24-09-2019 - |
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?
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"
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
- Vai al menu Query su SQL Management Studio e assicurati che la modalità SQLCMD sia abilitata
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
- Ora esegui
Assicurati di avere SQLCMD abilitato facendo clic sull'opzione Modalità query> SQLCMD nello studio di gestione.
Supponiamo di avere quattro file .sql (
script1.sql,script2.sql,script3.sql,script4.sql
) in una cartellac:\scripts
.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.
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
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):
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:
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.