Sql-Server

SQL Server 代理 - 不在輸出文件中顯示作業步驟詳細資訊和列標題

  • December 6, 2018

我有一個 SQL Server 代理作業,它按計劃執行選擇語句並將結果附加到 CSV 文件

(右鍵點擊作業–> 屬性–> 高級,然後將文件路徑添加到輸出文件位置)

這很好,除了它生成的輸出顯示

Job 'MyJobName' : Step1, 'Step Name' : Began executing YYYY-MM-DD HH-MM-SS

以及整個文件的列標題(它會在每個附加項中添加這個)

有沒有辦法不輸出作業名稱/步驟詳細資訊和列標題?

您可以使用 SQLCMD 執行此操作

詢問

記得添加 nocount 所以它不會將受影響的行添加到文件中

sqlcmd -Q"set nocount on; select * from sys.databases;"  -S localhost -D master -o  "c:\temp\test3.csv"

但是,您的工作步驟需要是 SQLCMD 在此處輸入圖像描述

文件

在此處輸入圖像描述

部分輸出 在此處輸入圖像描述

類似於@Randi 的方法

如果 usingPOWERSHELL是一個選項,您可以將作業類型更改為POWERSHELL並使用INVOKE-SQLCMD

這種方法的一個可能缺點是因為ConvertTo-CSV自動用雙引號將輸出列括起來。以下腳本處理所有雙引號的消除,並從結果中刪除標題。

Invoke-Sqlcmd -ServerInstance "." -Query "Select name from sys.databases where Database_ID <=4" | ConvertTo-Csv -NoTypeInformation | % {$_ -replace '"',''} | Select-Object -Skip 1 | Out-File ("C:\Test\test.txt") -Append -Force -Encoding ascii

由於使用了兩次執行 SQL 代理作業為我輸出以下內容-Append

master
tempdb
model
msdb
master
tempdb
model
msdb

引用自:https://dba.stackexchange.com/questions/224295