Hello. I have to run many sql scripts each day. Sometimes I'll have 100+
scripts to run. The scripts always come in a folder numbered in the order
they need to be run (001 - ScriptA, 002 - ScriptB, etc.).
I've been running them all manaully one by one so that I can look for errors
in the results. I'd love to be able to point a batch file to the folder
with all the scripts, have them run one by one, and have the results output
in one file with:
Results.txt:
001 - ScriptA.sql
Command Completed Successfully
002 - ScriptB.sql
Command Completed Successfully
003 - ScriptC.sql
Error in line 1...etc
004 - ScriptD.sql
Command Completed Successfully
etc.
I have tried piping them using c:\Scipts\*.sql > c:\AllScripts.sql
However, this is often causes problems as sometimes the end of one script
will join directly to the start of the first script making statements that
don't exist (EndscriptGo).. two statements joint into one. Or other times
scripts will be left out for some reason. Piping has caused many problems
and isn't trusted anymore.
I tried using osql
OSQL -Usa -Ppass -Sdb123 -iC:\scripts\001scriptA.sql -oC:\logs\001scriptA.lo
g
but I don't know how to run scripts 001 through say 108 in order, or how to
have them output into one file.
Is there a way to use this or something else (like run 001*.sql, then run
001+1*.sql [I have no idea how to program!) so that I can just point it to
the folder with the numbered scripts and have them run one by one in order?
Any help is REALLY REALLY appreciated!!!!
Thank you
Why not put the names of the scripts in a table and loop thru with a cursor
and call oSql one script at a time?
Andrew J. Kelly SQL MVP
"Tom" <none@.none.com> wrote in message
news:eDGJSmA0EHA.4028@.TK2MSFTNGP15.phx.gbl...
> Hello. I have to run many sql scripts each day. Sometimes I'll have 100+
> scripts to run. The scripts always come in a folder numbered in the order
> they need to be run (001 - ScriptA, 002 - ScriptB, etc.).
> I've been running them all manaully one by one so that I can look for
> errors
> in the results. I'd love to be able to point a batch file to the folder
> with all the scripts, have them run one by one, and have the results
> output
> in one file with:
> Results.txt:
> 001 - ScriptA.sql
> Command Completed Successfully
> --
> 002 - ScriptB.sql
> Command Completed Successfully
> --
> 003 - ScriptC.sql
> Error in line 1...etc
> --
> 004 - ScriptD.sql
> Command Completed Successfully
> --
> etc.
>
> I have tried piping them using c:\Scipts\*.sql > c:\AllScripts.sql
> However, this is often causes problems as sometimes the end of one script
> will join directly to the start of the first script making statements that
> don't exist (EndscriptGo).. two statements joint into one. Or other times
> scripts will be left out for some reason. Piping has caused many problems
> and isn't trusted anymore.
> I tried using osql
> OSQL -Usa -Ppass -Sdb123 -iC:\scripts\001scriptA.sql -oC:\logs\001scriptA.lo
> g
> but I don't know how to run scripts 001 through say 108 in order, or how
> to
> have them output into one file.
> Is there a way to use this or something else (like run 001*.sql, then run
> 001+1*.sql [I have no idea how to program!) so that I can just point it to
> the folder with the numbered scripts and have them run one by one in
> order?
>
> Any help is REALLY REALLY appreciated!!!!
>
> Thank you
>
>
|||Okay, that is way over my head!
I would have to create a new DB for it because I can't add a new table to
the live DB.
If I tried adding all the script names to a table wouldn't I have to type
all the names of the scritps in the table? If there's a way to automate
that I could try it, but it sounds like it could end up being as manual a
process as running them one by one.
What do you think?
Thanks
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:OeJdMvA0EHA.3908@.TK2MSFTNGP12.phx.gbl...
> Why not put the names of the scripts in a table and loop thru with a
cursor[vbcol=seagreen]
> and call oSql one script at a time?
> --
> Andrew J. Kelly SQL MVP
>
> "Tom" <none@.none.com> wrote in message
> news:eDGJSmA0EHA.4028@.TK2MSFTNGP15.phx.gbl...
100+[vbcol=seagreen]
order[vbcol=seagreen]
script[vbcol=seagreen]
that[vbcol=seagreen]
times[vbcol=seagreen]
problems[vbcol=seagreen]
OSQL -Usa -Ppass -Sdb123 -iC:\scripts\001scriptA.sql -oC:\logs\001scriptA.lo[vbcol=seagreen]
run[vbcol=seagreen]
to
>
|||See
http://www.nigelrivett.net/s_ProcessAllFilesInDir.html
It will execute a proc for each file in a directory in order of the file name.
Create a proc which takes two parameters, file path and file name and
executes a osql command to run that file with output to a file.
Set @.ProcSp to be this proc and you are done.
"Tom" wrote:
> Hello. I have to run many sql scripts each day. Sometimes I'll have 100+
> scripts to run. The scripts always come in a folder numbered in the order
> they need to be run (001 - ScriptA, 002 - ScriptB, etc.).
> I've been running them all manaully one by one so that I can look for errors
> in the results. I'd love to be able to point a batch file to the folder
> with all the scripts, have them run one by one, and have the results output
> in one file with:
> Results.txt:
> 001 - ScriptA.sql
> Command Completed Successfully
> --
> 002 - ScriptB.sql
> Command Completed Successfully
> --
> 003 - ScriptC.sql
> Error in line 1...etc
> --
> 004 - ScriptD.sql
> Command Completed Successfully
> --
> etc.
>
> I have tried piping them using c:\Scipts\*.sql > c:\AllScripts.sql
> However, this is often causes problems as sometimes the end of one script
> will join directly to the start of the first script making statements that
> don't exist (EndscriptGo).. two statements joint into one. Or other times
> scripts will be left out for some reason. Piping has caused many problems
> and isn't trusted anymore.
> I tried using osql
> OSQL -Usa -Ppass -Sdb123 -iC:\scripts\001scriptA.sql -oC:\logs\001scriptA.lo
> g
> but I don't know how to run scripts 001 through say 108 in order, or how to
> have them output into one file.
> Is there a way to use this or something else (like run 001*.sql, then run
> 001+1*.sql [I have no idea how to program!) so that I can just point it to
> the folder with the numbered scripts and have them run one by one in order?
>
> Any help is REALLY REALLY appreciated!!!!
>
> Thank you
>
>
|||Awesome, I'll check it out!
Thanks so much Nigel!
Tom
"Nigel Rivett" <sqlnr@.hotmail.com> wrote in message
news:3FD23957-DF3C-4EEB-9987-869B69B6C195@.microsoft.com...
> See
> http://www.nigelrivett.net/s_ProcessAllFilesInDir.html
> It will execute a proc for each file in a directory in order of the file
name.[vbcol=seagreen]
> Create a proc which takes two parameters, file path and file name and
> executes a osql command to run that file with output to a file.
> Set @.ProcSp to be this proc and you are done.
>
> "Tom" wrote:
100+[vbcol=seagreen]
order[vbcol=seagreen]
errors[vbcol=seagreen]
output[vbcol=seagreen]
script[vbcol=seagreen]
that[vbcol=seagreen]
times[vbcol=seagreen]
problems[vbcol=seagreen]
OSQL -Usa -Ppass -Sdb123 -iC:\scripts\001scriptA.sql -oC:\logs\001scriptA.lo[vbcol=seagreen]
to[vbcol=seagreen]
run[vbcol=seagreen]
to[vbcol=seagreen]
order?[vbcol=seagreen]
|||Nigel, is there an output file in this?
Thanks,
Tom
"Tom" <none@.none.com> wrote in message
news:uJKqlyC0EHA.2600@.TK2MSFTNGP09.phx.gbl...[vbcol=seagreen]
> Awesome, I'll check it out!
> Thanks so much Nigel!
>
> Tom
> "Nigel Rivett" <sqlnr@.hotmail.com> wrote in message
> news:3FD23957-DF3C-4EEB-9987-869B69B6C195@.microsoft.com...
> name.
> 100+
> order
> errors
folder
> output
> script
> that
> times
> problems
>
OSQL -Usa -Ppass -Sdb123 -iC:\scripts\001scriptA.sql -oC:\logs\001scriptA.lo[vbcol=seagreen]
how[vbcol=seagreen]
> to
> run
it
> to
> order?
>
|||Nigel,
How do I create the @.procSP and what exactly do I put in it in this case?
Thanks,
Tom
"Tom" <none@.none.com> wrote in message
news:uJKqlyC0EHA.2600@.TK2MSFTNGP09.phx.gbl...[vbcol=seagreen]
> Awesome, I'll check it out!
> Thanks so much Nigel!
>
> Tom
> "Nigel Rivett" <sqlnr@.hotmail.com> wrote in message
> news:3FD23957-DF3C-4EEB-9987-869B69B6C195@.microsoft.com...
> name.
> 100+
> order
> errors
folder
> output
> script
> that
> times
> problems
>
OSQL -Usa -Ppass -Sdb123 -iC:\scripts\001scriptA.sql -oC:\logs\001scriptA.lo[vbcol=seagreen]
how[vbcol=seagreen]
> to
> run
it
> to
> order?
>
|||Tom wrote:
> but it sounds like it could end up
> being as manual a process as running them one by one.
> What do you think?
Yes, but only the first time...
David Gugick
Imceda Software
www.imceda.com
|||Consider this:
1. Create a text file with the .sql files listed one per line.
2. Create a command/batch file to submit each to osql.exe
3. Have osql send results to the screen, but instead redirect results to a
logfile
For example:
text.txt contents
sqlscript1.sql
sqlscript2.sql
sqlscript3.sql
sqlcommand.cmd contents
for /F %%i IN (text.txt) DO osql -Usa -Ppass -Sdb123 -i%%i >> logfile.txt
So, for each file in text.txt, submit the osql script file and redirect to
logfile.
Check out Windows Help on the For command, it's quite handy. I suggest using
the text.txt file so you can edit which scripts run and in which order, in
case your numeric sequence needs to be reordered.
Larry
"Tom" <none@.none.com> wrote in message
news:eDGJSmA0EHA.4028@.TK2MSFTNGP15.phx.gbl...
> Hello. I have to run many sql scripts each day. Sometimes I'll have 100+
> scripts to run. The scripts always come in a folder numbered in the order
> they need to be run (001 - ScriptA, 002 - ScriptB, etc.).
> I've been running them all manaully one by one so that I can look for
errors
> in the results. I'd love to be able to point a batch file to the folder
> with all the scripts, have them run one by one, and have the results
output
> in one file with:
> Results.txt:
> 001 - ScriptA.sql
> Command Completed Successfully
> --
> 002 - ScriptB.sql
> Command Completed Successfully
> --
> 003 - ScriptC.sql
> Error in line 1...etc
> --
> 004 - ScriptD.sql
> Command Completed Successfully
> --
> etc.
>
> I have tried piping them using c:\Scipts\*.sql > c:\AllScripts.sql
> However, this is often causes problems as sometimes the end of one script
> will join directly to the start of the first script making statements that
> don't exist (EndscriptGo).. two statements joint into one. Or other times
> scripts will be left out for some reason. Piping has caused many problems
> and isn't trusted anymore.
> I tried using osql
>
OSQL -Usa -Ppass -Sdb123 -iC:\scripts\001scriptA.sql -oC:\logs\001scriptA.lo
> g
> but I don't know how to run scripts 001 through say 108 in order, or how
to
> have them output into one file.
> Is there a way to use this or something else (like run 001*.sql, then run
> 001+1*.sql [I have no idea how to program!) so that I can just point it to
> the folder with the numbered scripts and have them run one by one in
order?
>
> Any help is REALLY REALLY appreciated!!!!
>
> Thank you
>
>
|||Have you thought about using DTS?. The Active-X filesystem
object would help you figure out the file names and I'm
sure DTS would help you setup a loop to execute your
programs.
Vinay
vinaydottoomuatschwabptdotcom
>--Original Message--
>Tom wrote:
>Yes, but only the first time...
>--
>David Gugick
>Imceda Software
>www.imceda.com
>.
>
No comments:
Post a Comment