Sql-Server
使用 Echo 語句在文本文件中寫入 Echo is ON
以下程式碼用於在文本文件中寫入數字,而是將“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
你應該看看:
- Technet使用命令重定向運算符
- SS64重定向:
數字句柄:
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 的答案。