2013-10-10 4 views
0

C#의 System.Diagnostics.Process 도구에 대한 코드를 작성하는 동안 StandardOutput 만 잡아서 파싱했습니다. 그러나 이것에 대한 단위 테스트는 빌드 서버에서 실패했습니다. 동료가 그의 기계를 시험해 본 후에도 실패했습니다.내 컴퓨터가 stderr을 표준 출력으로 쓰는 이유는 무엇입니까?

그렇다면 StandardOutput이 비어있는 이유에 대해 Jon Skeet's answer이 발견되어 System.Diagnostics.Process에서 StandardOutput 및 StandardError 캡처에 대해 언급했습니다. 물론, 우리는 동료의 기계에서 그것을 시도했고 효과가있었습니다.

제 질문은 내 동료의 컴퓨터와 빌드 서버의 StandardError (sterr)에 쓰여지고있는 내 컴퓨터의 StandardOutput (stdout)에 뭔가가 쓰여지고 있습니다. 이 동작을 강제하는 환경 설정이 있습니까?

답변

1

SQL Server 2008 (c : \ Program Files \ Microsoft SQL Server \ 100 \ Tools \ Binn) 버전을 동료 컴퓨터에서 사용하고 컴퓨터를 작성한 sqlcmd.exe 명령이 나왔다. 내 컴퓨터의 SQL Server 2012 (c : \ Program Files \ Microsoft SQL Server \ 110 \ Tools \ Binn) 버전입니다. 내 컴퓨터에서 SQL Server 2008 버전을 가리 키도록 경로 변수를 변경했습니다.

실행중인 .sql 스크립트가 sqlcmd.exe -t, 쿼리 시간 초과보다 오래 걸리면 SQL Server 2012의 sqlcmd.exe에서 stderr 대신 "제한 시간 만료되었습니다"메시지가 stdout에 기록 될 수 있습니다. , 매개 변수는로 설정됩니다.