У меня есть запущенные задания SQL Server, которые включают периодические операторы печати, так что я могу заглянуть в историю заданий и понять, что произошло. Но вывод загроможден [SQLSTATE 01000]. Учитывая, что существует ограничение на то, сколько в этом выводе поместится, я хотел бы как можно больше места для информации, которая мне небезразлична.
Есть ли способ подавить вывод [SQLSTATE 01000] для команд печати?





Вам, вероятно, не повезло. Это нормальный вывод для операторов PRINT. Я не думаю, что есть способ их подавить.
Не положительно, если вы хотите удалить только [SQLSTATE 01000] из вывода или все, что содержит [SQLSTATE 01000]. Так что здесь есть оба пути.
Print replace(@PrintThis, '[SQLSTATE 01000]', '');
В основном это ничего не заменит [SQLSTATE 01000].
Следующее использует CHARINDEX (expression1, expression1 [, start_location]), ищет в expression2 выражение1 и возвращает его начальную позицию, если она найдена. Поиск начинается с start_location.
@result = CHARINDEX('[SQLSTATE 01000]', @PrintThis)
if (@result > 0)
Print @PrintThis
Итак, если CHARINDEX <0, строка [SQLSTATE 01000] не существует и не печатается
Если вы пропустили то, что пытаетесь сделать, ответьте соответствующим образом.
Надеюсь, это поможет,
Бретт
Проблема (извините. "Особенность") связана с командой PRINT в агенте SQL. Я преодолел эту проблему, создав табличную переменную с одним столбцом для «вывода» и заполняя ее по мере прохождения сценария, а затем в самом конце задания SELECT из табличной переменной. Передача вывода в файл через агент SQL дает мне журнал работы. В любой момент выполнения задания, если возникает ошибка, я сбрасываю содержимое таблицы перед завершением. (Обычно я включаю команду, которую нужно выполнить, в переменную таблицы непосредственно перед ее выполнением). Простая замена всех ваших операторов PRINT одним оператором SELECT в конце задания избавит вас от надоедливых суффиксов [SQLSTATE 01000] к
каждый... проклятие... линия...
Ваше здоровье, Кен
Но так полезно постоянно быть уверенным, что SqlState действительно 01000, вам не кажется?