बैच कमांड में पाइप कैरेक्टर का एक विशेष अर्थ होता है, इसलिए यह बच निकला कैरेट चरित्र का उपयोग करना। यह काम करना चाहिए:
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 सर्वर को C:ड्राइव, और xp_cmdshell
के रूट पर लिखने की अनुमति नहीं होनी चाहिए। डिफ़ॉल्ट रूप से अक्षम है। मेरा सुझाव है कि आप sqlcmd.exe
. जैसे विकल्पों को देखें , bcp.exe
या आपकी पसंदीदा भाषा में एक छोटी स्क्रिप्ट (पॉवरशेल, पर्ल, पायथन, जो भी हो)।
SQL सर्वर से डेटा को क्वेरी करने के लिए सर्वर साइड से इसे पुश करने की तुलना में यह आमतौर पर बहुत आसान, सुरक्षित और अधिक लचीला होता है। आपके विशिष्ट मामले में, ऐसा लगता है कि आप एक सीमांकित फ़ाइल लिखना चाहते हैं, और bcp.exe
उस उद्देश्य के लिए अभिप्रेत है
।