2014-04-25 5 views
0

안녕하세요 여러분, Google에서이 사이트를 보았는데 정보가 거의 없습니다. "SELECT * FROM Table WHERE (various)"이라는 쿼리가 주어 지므로 C# (.net 3.5에서 호출되었지만 발생 될 수 있음)과 같은 BCP 유틸리티 쿼리를 넣을 것입니다.모니터 BCP 진행

xp_cmdshell 'bcp "SELECT * FROM [DB].dbo.[table] " queryout "\\networkpath\bla\file.csv" -N -S localhost -T -E -m0' 

그러나 SQL Management Studio에서이 쿼리를 실행하면 유용하게 "1000 개의 행이 복사되었습니다."라는 메시지가 나타납니다. 메시지. C# 응용 프로그램에서 해당 메시지를 가져오고 싶습니다.

SqlDependency, SqlConnection.InfoMessage, BeginExecuteNonQuery() 등의 C# 메서드를 여러 번 사용해 보았습니다. 따라서 C# 코드가 부족합니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

건배

+0

아마도 SSMS는 한 번에 1000 개의 행을 쿼리하고이를 기반으로보고합니다. 당신도 똑같이 할 수 있습니다. –

답변

0

BCP는 xp_cmdshell을 통해 서버에서 실행되는 명령 줄 응용 프로그램입니다. 그래서 bcp는 서버에서 stdout에 쓰고 있습니다. 그 출력을 캡쳐하려면 여기에서 설명합니다. Get Results from XP_CMDSHELL; 이것은 당신이 찾고있는 것을 줄 수도 있습니다.

0

bcp.exe 명령을 실행하고 진행 상태를 모니터링하는 방식으로 질문을 이해합니다. Process.Startredirect console output to your application을 사용하여 실행하십시오. 그런 다음 구문 분석 할 수 있습니다.

xp_cmdshell을 사용하여 실행하면 InfoMessage 이벤트가 메시지를 수신합니다 (또는 지금 당장은 현재 행으로 출력 될 수 있습니다).