2013-03-11 8 views
5

Desidero inviare un risultato di query a un file, quindi ho provato a utilizzare il comando bcp. Ma non può passare alcun parametro a questo. Mostra errore.Come passare un parametro a un comando bcp in sql server

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

In futuro, pubblicare l'errore effettivo. –

risposta

4

mettere il vostro parametrs prima di una chiamata 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

ma dà un errore. Per mia informazione ho dichiarato @ date e @ bcp as varchar "Procedura xp_cmdshell, riga 1 La procedura prevede il parametro 'command_string' di tipo 'varchar'." – Kamal

+1

Questo errore si verifica perché si utilizza varchar (max) per le variabili dichiarate. Come hai dichiarato varchar per @date e @bcp? Usa data varchar (10), bcp varchar (8000) invece di data varchar (max), bcp varchar (max) –

+0

grazie mille, hai salvato la mia giornata e sì stavo facendo lo stesso errore che avevi specificato :) – Kamal

0

sto usando seguente query, uscita come segue e file non si trova nella posizione come detto.

Query: exec xp_cmdshell 'BCP "utilizzare Mimsadaptor; selezionare top * dal registro ordine 10 per LogDate" queryout "D: \ cdr_cg.txt" -T -c -t,' USCITA: NULL copia partire ... SQLState = 01000, NativeError = 5701 Avviso = [Microsoft] [Driver ODBC SQL Server] [SQL Server] Cambiato il contesto del database in "MIMSAdaptor". NULL 10 righe copiate. Dimensione pacchetto di rete (byte): 4096 Ora orologio (ms.): Totale 16 NULL

Problemi correlati