输出结果集时抑制 tempdb 消息

Suppress tempdb message when outputting result set

使用 SQLCMD,我 运行 一个脚本输出到 STDOUT 然后 gzip 输出。当我查看输出文件时,我看到这条警告消息:

Database name 'tempdb' ignored, referencing object in tempdb.

在我的脚本中,我在脚本开头进行了检查以删除临时 table(如果存在):

IF OBJECT_ID('tempdb..#TheTable') IS NOT NULL
BEGIN
    DROP TABLE tempdb..#TheTable
END

但是 - 我也有 SET NOCOUNT ON,但文件仍然捕获警告消息。

SQLCMD 脚本:
sqlcmd -i TheScript.sql -h-1 -k1 -s"," -W -u | gzip > "C:\TheOutput.gz"

有没有办法抑制这样的消息?

将您的 if 条件更改为以下模式:

IF 0 < OBJECT_ID('tempdb..#TheTable')
 DROP TABLE #TheTable

这不应导致任何错误消息。

适用于 SQL Server 2016 及更高版本且没有任何消息的简单干净版本:

drop table if exists #TheTable