我已经运行了包含定期“打印”语句的 SQL Server 作业,这样我就可以查看作业历史记录并了解发生了什么。但是输出中充满了 [SQLSTATE 01000]。鉴于此输出可以容纳多少是有限的,我希望尽可能多的空间来存储我关心的信息。
有什么方法可以抑制“打印”命令的 [SQLSTATE 01000] 输出?
我已经运行了包含定期“打印”语句的 SQL Server 作业,这样我就可以查看作业历史记录并了解发生了什么。但是输出中充满了 [SQLSTATE 01000]。鉴于此输出可以容纳多少是有限的,我希望尽可能多的空间来存储我关心的信息。
有什么方法可以抑制“打印”命令的 [SQLSTATE 01000] 输出?
问题(对不起。“功能”)与 SQL 代理中的 PRINT 命令有关。我通过创建一个表变量来解决这个问题,其中有一列用于“输出”,并在我完成脚本时填充它,然后在作业的最后从表变量中选择。通过 SQL 代理将输出通过管道传输到文件会给我一份工作日志。在工作中的任何时候,如果遇到错误,我会在退出前转储表的内容。(我通常在执行它之前将要执行的命令包含在表变量中)。只需在作业结束时用一个 SELECT 语句替换所有 PRINT 语句,就可以摆脱那些讨厌的 [SQLSTATE 01000] 后缀
每...该死的...行...
干杯,肯
你可能不走运。这是 PRINT 语句的正常输出。我认为没有任何方法可以压制他们。
如果您只想从输出中删除 [SQLSTATE 01000] 或包含 [SQLSTATE 01000] 的任何内容,则不是肯定的。所以这是两种方式。
Print replace(@PrintThis, '[SQLSTATE 01000]', '');
基本上这将替换 [SQLSTATE 01000] 什么都没有。
接下来使用 CHARINDEX(expression1, expression1 [, start_location]),在 expression2 中搜索 expression1,如果找到则返回其起始位置。搜索从 start_location 开始。
@result = CHARINDEX('[SQLSTATE 01000]', @PrintThis)
if (@result > 0)
Print @PrintThis
因此,如果 CHARINDEX < 0,则字符串 [SQLSTATE 01000] 不存在且不打印
如果错过了您正在尝试做的事情,请回复。
我希望这有帮助,
布雷特