Sql-Server

使用 Echo 語句在文本文件中寫入 Echo is ON

  • February 3, 2016

以下程式碼用於在文本文件中寫入數字,而是將“Echo is ON”寫入文本文件。

SET @CMD = 'ECHO '+@Ver+'>'+@Vercheck      
 Print @CMD

EXEC xp_cmdshell @CMD  
 ,NO_OUTPUT 

列印@CMD 給出“ECHO 1>C:\Pharmsuite\Vercheck.txt”

這裡的查詢不是 1,而是寫“Echo is ON”。

這個命令:ECHO 1>C:\Pharmsuite\Vercheck.txt

不做你認為應該做的事情,因為 1> 有特殊含義。

可以通過在之前添加一個空格來解決此問題>

ECHO 1 >C:\Pharmsuite\Vercheck.txt

或者在你的情況下:

SET @CMD = 'ECHO '+@Ver+' >'+@Vercheck

它也適用於這個命令(確保前面有一個空格ECHO

$$ thanks to Andriy M $$):

SET @CMD = '>'+@Vercheck+' ECHO '+@Ver

你應該看看:

數字句柄:

STDIN = 0 鍵盤輸入

STDOUT = 1 文本輸出

STDERR = 2 錯誤文本輸出

UNDEFINED = 3-9

command 2> filename 將任何錯誤消息重定向到文件中

command 2>> filename 將任何錯誤消息附加到文件中

(命令)2> filename 將任何 CMD.exe 錯誤重定向到文件中

無論如何,您應該避免使用xp_cmdshell. 如果您嘗試輸出某些內容,Powershell 或 SQL Server 命令行命令是更好的選擇。

使用 Powershell 和Invoke-Sqlcmd

Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MyInstance"
Invoke-Sqlcmd -InputFile "C:\MyFolder\TestSQLCmd.sql" | Out-File -filePath "C:\MyFolder\TestSQLCmd.rpt"

您顯然必鬚根據自己的要求對其進行調整,並且您還必須使用 osql 查看 Daniel Hutmacher 的答案。

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