Risposte:
Crea un file .BAT con il seguente comando:
for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause
Se è necessario fornire nome utente e password
for %%G in (*.sql) do sqlcmd /S servername /d databaseName -U username -P
password -i"%%G"
Notare che "-E" non è necessario quando vengono forniti utente / password
Posiziona questo file .BAT nella directory da cui desideri eseguire i file .SQL, fai doppio clic sul file .BAT e il gioco è fatto!
for %%G in (*.sql) do sqlcmd /S servername /d databaseName -U username -P "password" -i"%%G"
Usa FOR . Dal prompt dei comandi:
c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
In SQL Management Studio aprire una nuova query e digitare tutti i file come di seguito
:r c:\Scripts\script1.sql
:r c:\Scripts\script2.sql
:r c:\Scripts\script3.sql
Fare clic su 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
Assicurati di avere SQLCMD abilitato facendo clic sull'opzione Query> Modalità SQLCMD nello studio di gestione.
Supponiamo di avere quattro file .sql ( script1.sql,script2.sql,script3.sql,script4.sql
) in una cartella c:\scripts
.
Creare 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
Salvare Main.sql in c: \ scripts stesso.
Crea un file batch denominato ExecuteScripts.bat
con quanto segue:
SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
PAUSE
Ricorda di sostituire <YourDatabaseName>
con il database che desideri eseguire i tuoi script. Ad esempio, se il database è "Employee", il comando sarebbe il seguente:
SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
PAUSE
Eseguire il file batch facendo doppio clic sullo stesso.
-b
all'esempio:SQLCMD -b -i "file 1.sql","file 2.sql"
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 selezionare tale elenco ogni volta che si desidera eseguire gli stessi script nell'ordine creato (è possibile aggiungere anche più elenchi di script):
Quando gli script e i database sono selezionati, verranno visualizzati nella finestra principale e tutto ciò che devi fare è fare clic sul pulsante "Esegui" e tutti gli script verranno eseguiti sui database selezionati nell'ordine dato:
Query generale
salva le righe seguenti nel blocco note con il nome batch.bat e posizionale all'interno della cartella in cui sono presenti tutti i tuoi file di script
for %%G in (*.sql) do sqlcmd /S servername /d databasename -i"%%G"
pause
ESEMPIO
per %% G in (* .sql) esegui sqlcmd / S NFGDDD23432 / d EMPLYEEDB -i "%% G" pausa
a volte se il login non è riuscito per te, utilizza il codice seguente con nome utente e password
for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause
per %% G in (* .sql) eseguire sqlcmd / S NE8148server / d EMPLYEEDB -U Scott -P tiger -i "%% G" pausa
Dopo aver creato il file bat all'interno della cartella in cui si trovano i tuoi file Script, fai clic sul file bat che i tuoi script verranno eseguiti
Ho scritto un'utilità open source in C # che consente di trascinare e rilasciare molti file SQL e iniziare a eseguirli su un database.
L'utilità ha le seguenti caratteristiche:
Il modo più semplice che ho trovato includeva i seguenti passaggi (l'unico requisito è che sia in Win7 +):
Sembra lungo, ma in realtà è molto veloce .. (sembra lungo come ho descritto anche i passaggi più piccoli)
Quello che so è che puoi usare 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 di 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
)
Passaggio 1: le righe sopra vengono copiate nel blocco note e salvate come mazza.
step2: nella cartella abc dell'unità d in tutti i file SQL nelle query eseguite nel server sql.
Step3: Fornisci il tuo IP, ID utente e password.
Puoi creare un unico script che richiami tutti gli altri.
Inserisci quanto segue in un file batch:
@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"
Quando si esegue quel file batch, verrà creato 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 da chiamare sqlplus
dopo aver creato lo all.sql
script)
Per eseguire ogni file SQL sulla stessa directory utilizzare il seguente comando:
ls | awk '{print "@"$0}' > all.sql
Questo comando creerà un singolo file SQL con i nomi di ogni file SQL nella directory aggiunti da "@".
Dopo che all.sql
è stato creato, esegui semplicemente all.sql
con SQLPlus, questo eseguirà ogni file sql in all.sql
.
Se puoi usare Interactive SQL:
1 - Crea un file .BAT con questo codice:
@ECHO OFF ECHO
for %%G in (*.sql) do dbisql -c "uid=dba;pwd=XXXXXXXX;ServerName=INSERT-DB-NAME-HERE" %%G
pause
2 - Cambia pwd e ServerName.
3 - Metti il file .BAT nella cartella che contiene i file .SQL ed eseguilo.