2013-03-11 51 views
5

我想將查詢結果發送到文件,因此嘗試使用bcp命令。但不能傳遞任何參數。它顯示錯誤。如何將參數傳遞給sql服務器中的bcp命令

EXEC xp_cmdshell 'bcp "SELECT * FROM CG.dbo.cdyy where EndTime between  DATEADD(s,0,DATEADD(mm, DATEDIFF(m,0,'[email protected]+'),0)) and DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,1,'[email protected]+')+1,0)) " queryout "D:\cdr_cg.txt" -T -c -t,' 
+0

將來,發佈實際的錯誤。 – 2014-02-05 05:12:52

回答

4

把你parametrs通話master..xp_cmdshell

DECLARE @date varchar(10) = '20130311', 
     @bcp varchar(8000) 

SELECT @bcp = 'bcp "SELECT * FROM CG.dbo.cdyy WHERE EndTime between DATEADD(s,0,DATEADD(mm, DATEDIFF(m,0,''' + @date + '''),0)) AND DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,1,''' + @date + ''')+1,0)) " queryout "D:\cdr_cg.txt" -T -c -t,' 

EXEC master..xp_cmdshell @bcp 
+0

但它給出了一個錯誤。僅供參考我聲明@ date和@ bcp as varchar 「過程xp_cmdshell,行1 過程需要'varchar'類型的參數'command_string'。」 – Kamal 2013-03-11 12:11:43

+1

發生此錯誤是因爲您爲聲明的變量使用了varchar(max)。如何爲@date和@bcp聲明varchar?使用date varchar(10),bcp varchar(8000)代替date varchar(max),bcp varchar(max) – 2013-03-12 08:34:30

+0

非常感謝,你救了我的一天,是的我犯了同樣的錯誤,你指定:) – Kamal 2013-03-13 05:19:42

0

之前我使用下面的查詢,輸出如下,作爲上述文件未在位置找到。

查詢: EXEC的xp_cmdshell 'BCP 「使用Mimsadaptor;通過LOGDATE選擇頂部10 *從數級」 queryout 「d:\ cdr_cg.txt」 -T -c -t,' OUTPUT: NULL 開始複製... SQLState = 01000,NativeError = 5701 警告= [Microsoft] [ODBC SQL Server驅動程序] [SQL Server]將數據庫上下文更改爲「MIMSAdaptor」。 NULL 複製10行。 網絡包大小(字節):4096 時鐘時間(毫秒):總計16 NULL

相關問題