문제

저장된 절차에 테이블을 만들고 BCP를 사용하여 콘텐츠를 내보낸 다음이 테이블을 떨어 뜨립니다. BCP 명령은 다음과 같습니다.

SET @sqlop = 'BCP "SELECT blah FROM MYTABLE" queryout "' + @txt4print* 
             + '" -b 50000 -c -t"," -S"server" -U"uname" -P"pswd"'
exec master..xp_cmdshell @sqlop       --, NO_OUTPUT

일반적으로 상점 절차에 오류가있는 경우 Message SQL 서버에서. 그러나 BCP의 출력은 메시지로 인쇄되지 않습니다. 따라서 MATLAB에서 오류 인스턴스를 캡처 할 수 없습니다. 문자열을 잡을 수있는 방법이 있습니까? error 아래 그림과 같이? 이 출력을 반환 할 수 있습니까? Message SQL Server에서? enter image description here

저는 고급 SQL 프로그래머가 아닙니다. 감사!

도움이 되었습니까?

해결책

여기에 출력이 있으므로 해당 출력을 캡처 한 다음 수동으로 오류를 강제 할 수 있어야합니다.

DECLARE @Output TABLE (OutputMessage NVARCHAR(4000));

SET @sqlop = 'BCP "SELECT blah FROM MYTABLE" queryout "' + @txt4print* 
             + '" -b 50000 -c -t"," -S"server" -U"uname" -P"pswd"'

INSERT INTO @Output
exec master..xp_cmdshell @sqlop       --, NO_OUTPUT

DELETE FROM @Output WHERE OutputMessage IS NULL

DECLARE @Statement NVARCHAR(MAX)

WHILE (SELECT COUNT(*) FROM @Output) > 0
BEGIN
    SELECT TOP 1 @Statement = OutputMessage FROM @Output
    IF @Statement LIKE '%Error%'
    BEGIN
      SET @Statement = 'Unexpected error in procedure: ' + @Statement
      RAISERROR(@Statement, 16, 1)
    END
END

또는 오류가 아닌 메시지 만 원한다면 비슷한 효과를 위해 인쇄물을 사용할 수 있어야합니다.

http://technet.microsoft.com/en-us/library/ms176047.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top