Jak badać w poziomie batch-a wynik polecenia sqlcmd?

19-lis-2011

SQLCmd to polecenie pozwalające na uruchamianie w trybie wsadowym skryptów SQL. Można go użyć np w edycji Express, do regularnego wykonywania kopii zapasowej (co było już opisane na mobilo/mobilo24). Jak jednak zbadać, jaki jest wynik działania polecenia SQLCmd z poziomu „dos-owego batch-a”, który uruchomił skrypt?

Załóżmy, że w batch-u masz polecenie:

sqlcmd -i D:\skrypty\kopia.sql -o d:\tmp\kopia.out

Jeżeli dojdzie do błędu związanego np. z brakiem pliku d:\skrypty\kopia.sql, to sqlcmd zwróci status błędu i możesz go sprawdzić badając zawartość zmiennej systemu operacyjnego %errorlevel%

Gdy nie dojdzie do błedu w sqlcmd, to zmienna %errorlevel% przyjmie wartość 0, a gdy dojdzie do błędu to 1 (lub inna niezerowa).

Jeżeli jednak bład nie był „aż tak gruby”, wynikał np. z błednego zapytania sql w pliku kopia.sql, to sqlcmd nadal zwraca 0.

Na szczęście mamy jednak opcję -b polecenia sqlcmd, która w przypadku napotkania błędu z natury sql-owego w skrypcie, przerwie ten skrypt, a sqlcmd zakończy się ze statusem 1. Polecenie należałoby więc zmienić na:

sqlcmd -i D:\skrypty\kopia.sql -o d:\tmp\kopia.out

Oczywiście tego rodzaju błedy można by też obsłużyć wewnętrznie w skrypcie sql np. przy pomocy BEGIN TRY oraz BEGIN CATCH.

 

 

Komentarze są wyłączone

Autor: Rafał Kraik