1

我已经运行了包含定期“打印”语句的 SQL Server 作业,这样我就可以查看作业历史记录并了解发生了什么。但是输出中充满了 [SQLSTATE 01000]。鉴于此输出可以容纳多少是有限的,我希望尽可能多的空间来存储我关心的信息。

有什么方法可以抑制“打印”命令的 [SQLSTATE 01000] 输出?

4

3 回答 3

3

问题(对不起。“功能”)与 SQL 代理中的 PRINT 命令有关。我通过创建一个表变量来解决这个问题,其中有一列用于“输出”,并在我完成脚本时填充它,然后在作业的最后从表变量中选择。通过 SQL 代理将输出通过管道传输到文件会给我一份工作日志。在工作中的任何时候,如果遇到错误,我会在退出前转储表的内容。(我通常在执行它之前将要执行的命令包含在表变量中)。只需在作业结束时用一个 SELECT 语句替换所有 PRINT 语句,就可以摆脱那些讨厌的 [SQLSTATE 01000] 后缀

每...该死的...行...

干杯,肯

于 2010-11-02T13:58:51.430 回答
0

你可能不走运。这是 PRINT 语句的正常输出。我认为没有任何方法可以压制他们。

于 2009-01-20T00:11:42.917 回答
-1

如果您只想从输出中删除 [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] 不存在且不打印

如果错过了您正在尝试做的事情,请回复。

我希望这有帮助,

布雷特

于 2009-01-27T02:19:01.977 回答