2009-07-20 2 views
1

우리 고유의 저장 프로 시저가 성공적으로 실행되었는지 여부를 확인하는 데 사용할 수있는 몇 가지 방법을 알고 있습니다. (출력 매개 변수를 사용하여 오류없이 실행 된 경우 저장 프로 시저의 끝에 선택 1과 같은 선택) ...우리 자신의 저장 프로 시저가 성공적으로 실행되었는지 여부를 확인하는 가장 좋은 방법은 무엇입니까

그래서 어느 것이 더 낫고 왜?

+0

저장 프로 시저가 하루에 여러 번 실행됩니까? – fARcRY

+0

여러 번 ..... – odiseh

답변

0

SP가 작성되었는지 여부를 명확하게 설명하는 인쇄 명령문이 있으면 더 쉽게 읽을 수 있습니다.

과정에서 오류가 발생하는 경우에

CREATE PROCEDURE CustOrdersDetail @OrderID int 
AS 
... 
... 
... 
GO 
IF OBJECT_ID('dbo.CustOrdersDetail') IS NOT NULL 
    PRINT '<<< CREATED PROCEDURE dbo.CustOrdersDetail >>>' 
ELSE 
    PRINT '<<< FAILED CREATING PROCEDURE dbo.CustOrdersDetail >>>' 
GO 
+0

응용 프로그램에서 전화를 거는 경우 어디서 인쇄됩니까? – msvcyc

+0

여러 sp에 대한 스크립트가 응용 프로그램 대신 도구를 통해 호출되는 경우 유용합니다. 응용 프로그램을 통해 단일 sp를 실행하는 경우 PRINT 대신 RETURN 또는 SELECT를 사용하십시오. –

1

사용 RAISERROR 밖으로 가짜 매개 변수를 사용하는 것보다 대부분의 고객과의 더 나은 통합합니다. 그들은 단순히 프로 시저를 호출하고 RAISERROR는 클라이언트 응용 프로그램에서 예외로 변환되며 예외는 응용 프로그램 코드에서 피하기 어렵습니다. 잡아서 처리해야합니다.

0

SP는 메소드/서브 루틴/프로 시저와 매우 비슷합니다. & 그들은 모두 완료해야 할 작업이 있습니다. 작업은 계산 결과가 & 인 것처럼 간단 할 수도 있고 테이블의 레코드에 대한 간단한 조작 일 수도 있습니다. 작업에 따라 성공 여부, 실패 여부, 실제 결과 등 작업 결과를 나타내는 out 값을 반환 할 수 있습니다.

0

전체 프로젝트/데이터베이스에 공통적 인 T-SQL 솔루션이 필요한 경우 모든 절차에 output 매개 변수를 사용할 수 있습니다. 그러나 RAISEERROR는 T-SQL이 아닌 클라이언트 코드에서 오류를 처리하는 방법입니다.

0

코드에서 처리 할 수있는 다른 반환 값을 사용하지 않는 이유는 무엇입니까?

0

추가 출력 매개 변수 또는 추가 선택 기능이 필요하지 않습니다.

문제가 있는지 여부를 알아야하는 유일한 경우 성공적인 실행으로 충분합니다. XACT_ABORT 및 TRY ... CATCH herehere의 토론을 살펴보십시오.

특정 오류를 알고 싶다면 return code이 발신자에게이 정보를 전달하는 올바른 방법입니다.

0

대부분의 프로덕션 시나리오에서 솔루션의 일부로 데이터베이스 계층 내에 사용자 지정 오류보고 구성 요소를 배포하는 경향이 있습니다. 약간의 로그 테이블과 오류 로깅 프로세스를 관리하는 몇 가지 저장 프로 시저가 있습니다.

프로덕션 서버에서 실행되는 모든 저장 프로 시저 코드는 SQL Server 2005 이상에서 사용할 수있는 TRY-CATCH-BLOCK 기능을 사용하여 캡슐화됩니다.

이는 드물 긴하지만 주어진 저장 프로 시저가 실패한 경우 발생 된 오류의 세부 사항과 발생한 오류의 세부 사항을 로그 테이블에 기록한다는 것을 의미합니다. 관련 세부 사항을 기록하기 위해 CATCH BLOCK 내에서 간단한 저장 프로 시저 호출이 이루어집니다.이 구현

토대 실제로 온라인

이 원하는해야 here, 당신이 쉽게 따라 전송 될 수있는 DBA 또는 심지어 SMS 경고에 이메일 알림을 통합하여, 예를 들어, 더이 구현을 확장 할 수있는 책에 설명되어 있습니다 오류의 심각도.

이 정렬을 구현하면 저장 프로 시저가 실패를보고하지 않으면 성공한 것입니다.

일단 간단하고 견고한 프레임 워크가 갖추어지면 기본 구현을 복제하여 다른 프로덕션 서버/응용 프로그램 플랫폼으로 롤아웃하는 것이 간단합니다.

특별한 것은 없지만 간단한 오류 로깅과보고 기능 만 있습니다.

반면에 저장 프로 시저의 성공적인 실행을 다시 기록해야하는 경우 로그 테이블을 통합하는 유사한 해결 방법을 고안 할 수 있습니다.

블로그 게시물에 대해이 질문이 비명을 지르고 있다고 생각합니다 ......

관련 문제