VSDBCMD.EXE Return Codes
Quick one based on a forum question where somebody asked how to detect if VSDBCMD.EXE failed or succeeded inside a batch file.
VSDBCMD.EXE does not return a very elaborate amount of information, there are just two return values 0 and 1, where zero indicates success and 1 failure. So in order to test for this you simply check the ERRORLEVEL inside your batch file.
This is a simple wrapper that I use that shells out to VSDBCMD.EXE and passes all the parameters, so I do not have to place the Deploy directory on the PATH.
1: @echo off
2: setlocal
3:
4: if "%PROCESSOR_ARCHITECTURE%"=="x86" call "%ProgramFiles%\Microsoft Visual Studio 9.0\VSTSDB\Deploy\vsdbcmd.exe" %*
5: if "%PROCESSOR_ARCHITECTURE%"=="AMD64" call "%ProgramFiles(x86)%\Microsoft Visual Studio 9.0\VSTSDB\Deploy\vsdbcmd.exe" %*
6:
7: if errorlevel 1 @echo vsdbcmd.exe failed&goto end
8: if errorlevel 0 @echo vsdbcmd.exe succeeded&goto end
9:
10: endlocal
11:
12: :end
13:
The checks for PROCESSOR_ARCHITECTURE make sure I can find the executable in the right location depending on the fact if I am running with a x32 or x64 CMD.EXE instance.
Also published on: https://www.dbproj.com/Tutorials/tabid/62/TID/16/cid/21/Default.aspx
Have fun,
GertD @ www.DBProj.com
Comments
Anonymous
October 20, 2009
Your blog is very helpful. I've also done a blog post in general on tracking down errors that show up during a VSDB deploy (vs a build), since you often get errors while debugging post deployment scripts and they can be elusive to track down. http://sql-dotnet.blogspot.com/2009/10/vsdb-tracking-down-deploy-errors.htmlAnonymous
April 08, 2010
Gert - Im having trouble with vsdbcmd not returning 1 when an error occurs inside my generated sql file during deployment. I'm using the RC of vs2010. Does the RC of vs2010 suffer from the issue fixed here: http://support.microsoft.com/kb/970595/ ?