2013-03-11 11 views
5

Chcę wysłać wynik kwerendy do pliku, dlatego próbowałem użyć polecenia bcp. Ale nie można przekazać żadnych parametrów do tego. Pokazuje błąd.Jak przekazać parametr do polecenia bcp w serwerze sql

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

W przyszłości wpisz aktualny błąd. –

Odpowiedz

4

Połóż PARAMETRY przed wezwaniem 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

, ale daje błąd. FYI Deklarowałem @ date i @ bcp jako varchar "Procedura xp_cmdshell, Linia 1 Procedura oczekuje parametru 'command_string' typu 'varchar'." – Kamal

+1

Ten błąd występuje, ponieważ używasz varchar (max) dla zadeklarowanych zmiennych. Jak zadeklarowałeś varchar dla @date i @bcp? Użyj daty varchar (10), bcp varchar (8000) zamiast daty varchar (max), bcp varchar (max) –

+0

wielkie dzięki, uratowałeś mój dzień i tak, robiłem ten sam błąd, który podałeś :) – Kamal

0

używam następującą kwerendę, wyjście w następujący sposób i plik nie znajduje się w miejscu, o którym mowa.

Zapytanie: exec xp_cmdshell 'BCP "korzystania Mimsadaptor; zaznaczyć TOP 10 * z dziennika zamówienie logdate" queryout "D: \ cdr_cg.txt" -T -c -t' WYJŚCIE: NULL Zaczynając kopia ... SQLState = 01000, NativeError = 5701 Ostrzeżenie = [Microsoft] [Sterownik ODBC SQL Server] [Serwer SQL] Zmieniono kontekst bazy danych na "MIMSAdaptor". NULL 10 wierszy skopiowanych. Rozmiar pakietu sieciowego (bajty): 4096 Czas zegara (ms.): Ogółem 16 NULL

Powiązane problemy