Я адаптирую большое количество сценариев SQL Server 2005 года для слияния двух из наших баз данных вместе. Скрипты запущены из .cmd файла, который называет sqlcmd для запущения скриптов в порядке. Однако я испытываю одну или две проблемы, где сценарии перестали работать.
Я хотел бы быстрый способ получить взгляд на состояние некоторых сценариев, где они идут не так, как надо - проверяют значения переменных, результаты некоторых запросов, материала как этот.
Если бы у меня была эта проблема с блоком.NET, то я увеличил бы код с Отладкой. Утверждайте или установите точки останова, где я знал, что отказы собирались произойти, который приостановит выполнение программы и позволит мне проверять значения переменных.
Я задавался вопросом, там эквивалент в SQL Server 2005?
Мне никогда не удавалось заставить интегрированную отладку хорошо работать с SQL Server - я обычно прибегаю к отладке "printf", используя либо PRINT, либо RAISERROR. RAISERROR может выполнять некоторое базовое форматирование аргументов, чтобы вывести значения в окно сообщений. Например, если у вас есть параметр @Val1 типа int, вы можете сделать следующее:
RAISERROR('Val1 = %i',10,1,@Val1) WITH NOWAIT
(опция WITH NOWAIT вызывает немедленное появление сообщения, а не обычное для SQL поведение буферизации сообщений/выводов)
Я использую пакетные файлы и проверяю код ошибки следующим образом:-
SQLCMD.EXE -b -l 30 -E -S <SERVER> -i "<SQLFILE>.sql">>"%LOG_FILE%"2>&1
IF ERRORLEVEL 1 (
ECHO. Failed.
) ELSE (
ECHO. Succeeded.
)