我已经运行了包含定期“打印”语句的SQL Server作业,这样我就可以查看作业历史记录并了解发生的情况。但输出与[SQLSTATE 01000]混杂在一起。鉴于这个输出中有多少限制,我希望尽可能多的空间来获取我关心的信息。
有没有办法抑制'print'命令的[SQLSTATE 01000]输出?
答案 0 :(得分:3)
问题(抱歉。“功能”)与SQL Agent中的PRINT命令有关。我已经通过创建一个表变量来解决这个问题,其中一列用于'output'并在我进入脚本时填充它,然后在表变量的作业SELECT的最后。通过SQL Agent将输出管道输出到文件可以为我提供作业日志。在作业中遇到错误的任何时候,我都会在退出之前转储表的内容。 (我通常在执行之前包含要在表变量中执行的命令)。简单地在作业结束时用一个SELECT语句替换所有PRINT语句将摆脱那些讨厌的[SQLSTATE 01000]后缀
...每隔 该死的... 线...
干杯, 肯
答案 1 :(得分:0)
你可能运气不好。这是PRINT语句的正常输出。我认为没有办法压制它们。
答案 2 :(得分:0)
如果您只想从输出中删除[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]不存在且不打印
如果错过了您想要做的事情,请回复。
我希望这有帮助,
布雷特