Karakter pipa memiliki arti khusus dalam perintah batch, jadi harus melarikan diri menggunakan karakter sisipan. Ini akan berhasil:
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
Meskipun ini bukan cara yang baik untuk menulis data ke file teks:biasanya SQL Server seharusnya tidak memiliki izin untuk menulis ke root drive C:, dan xp_cmdshell
dinonaktifkan secara default. Saya sarankan Anda melihat alternatif seperti sqlcmd.exe
, bcp.exe
atau skrip kecil dalam bahasa pilihan Anda (PowerShell, Perl, Python, apa pun).
Umumnya jauh lebih mudah, lebih aman, dan lebih fleksibel untuk meminta data dari SQL Server daripada mendorongnya keluar dari sisi server. Dalam kasus khusus Anda, sepertinya Anda ingin menulis file yang dibatasi, dan bcp.exe
dimaksudkan untuk tujuan itu
.