Today while working with a .bat file full of SQLCMDs with really verbose
output, I wanted just to capture error messages that were being sent to STDERR without changing the .sql files.
I know how to capture/redirect handles in a variety of programming languages,
but I haven’t tried to do this in a windows command prompt. A
quick search located a neat page on
Using Command Redirection Operators in Windows XP.
The most common redirect used is > which can write the output (STDOUT)
from a command to a file instead of displaying it onscreen. Place the number 2
before it ( 2> ) and you are now getting the errors (STDERR) handle to
write to a file.
So using cmd.exe in Windows you can redirect a command output from STDERR to
a file using
If you are trying to capture the STDERR with SQLCMD, you will need to
use the -r switch. Use -r0 to capture error messages of severity level 11 or
higher. Use -r1 to capture all error and PRINT messages.
Capture Severity 11 or Higher Error Messages to install-err.log
Capture all Error Messages and Print Messages to install-err.log
Capture STDOUT to install.log and Error Messages to install-err.log
Incidentally I found these pages while giving
a go. Apparently
feedback site for interface changes at Google. It uses a different branding
to try to get honest feedback from users on search results. Interesting.