Brug af errorlevel variablen i DOS command line med sqlcmd
Hej,Jeg forsøger at gøre følgende:
FOR.BAT:
FOR /F %%I IN (File.txt) DO (
sqlcmd -S KCWS010 -i %%I -b -E
ECHO %ERRORLEVEL%
IF %ERRORLEVEL% NEQ 1 GOTO Error
)
pause
GOTO :EOF
:Error
ECHO %~n0 "Der er sket en fejl tjek loggen"
ECHO.
pause
File.txt:
sql\Opdateringsscript1.sql
sql\Opdateringsscript2.sql
sql\Opdateringsscript1.sql:
SELECT 1
:EXIT(SELECT 1)
Ifølge alt dokumentation jeg kan finde burde %ERRORLEVEL% blive sat til 1 så jeg kan bruge den i min fejlhåndtering, men jeg får følgende output:
C:\Test\Test>(
sqlcmd -S KCWS010 -i sql\Opdateringsscript1.sql -b -E
ECHO 0
IF 0 NEQ 1 GOTO Error
)
-----------
1
(1 rows affected)
-----------
1
(1 rows affected)
0
C:\Test\Test>ECHO for "Der er sket en fejl tjek loggen"
Hvis jeg derimod ikke bruger en for løkke men bare laver:
UdenFOR.BAT:
sqlcmd -S KCWS010 -i sql\Opdateringsscript1.sql -b -E
ECHO %ERRORLEVEL%
Så får jeg:
C:\Test\Test>sqlcmd -S KCWS010 -i sql\Opdateringsscript1.sql -b -E
-----------
1
(1 rows affected)
-----------
1
(1 rows affected)
C:\Test\Test>ECHO 1
1
Det giver da ingen mening. Er der en måde at komme uden om det på?
Jeg har også forsøgt mig med RAISERROR('Taking the easy way out', 16, 127), som det bliver foreslået rundt omkring.
På forhånd tak.