管道字符在批处理命令中具有特殊含义,因此必须使用脱字符将其转义。这应该工作:
DECLARE @Text AS VARCHAr(100)DECLARE @Cmd AS VARCHAr(100)SET @Text = 'Hello world^| 'SET @Cmd ='echo ' + @Text + ' > C:AppTextFile.txt'EXECUTE Master.dbo.xp_CmdShell @Cmd
尽管这实际上不是将数据写入文本文件的好方法:通常,SQL
Server不应具有写入C:驱动器根目录的权限,并且
xp_cmdshell默认情况下处于禁用状态。我建议你看看喜欢的替代品
sqlcmd.exe,
bcp.exe或者在您的首选语言的一个小脚本(PowerShell中,Perl,Python和其他)。
从SQL
Server查询数据通常比从服务器端推送数据要容易,安全和灵活得多。在您的特定情况下,您似乎想写出一个带分隔符的文件,并
bcp.exe打算用于此目的。



