2010-08-03 2 views
0
SET ANSI_NULLS ON 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE PROCEDURE [Lending].[uspHMDAUpdateExport] (@BatchId int, @ModifiedById int) 
AS 
BEGIN 
SET NOCOUNT ON 
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 

DISABLE TRIGGER Lending.utrHMDAAudit ON Lending.HMDA 

UPDATE Lending.HMDA SET IsExported = 1,ModifiedById = @ModifiedById WHERE BatchId = @BatchId 

ENABLE TRIGGER Lending.utrHMDAAudit ON Lending.HMDA 

END 

SET QUOTED_IDENTIFIER OFF 
GO 
GRANT EXECUTE ON [Lending].[uspHMDALarInfoGet] TO [caApplication] AS [dbo] 
GO 

DISABLE 및 ENABLE 구문이 잘못되었다고 표시합니다. 왜?잘못된 TSQL DISABLE 및 ENABLE 문

+0

아마도'[대여]'가 방아쇠를위한 올바른 스키마가 아니겠습니까? –

+0

감사 트리거를 사용하지 않도록 설정하는 것은 일반적으로 데이터를 감사하려는 사람들의 관점에서보기에 좋지 않습니다. 왜 당신이 그것을 무능하게하고 있습니까? – HLGEM

답변

1

전에 당신은에서 (일부 세미콜론을 필요로하는 더 나은

사용할 수 없습니다 DISABLE 앞의 문장과 ENABLE 전에 문의 끝) 트리거를 모두 READ UNCOMMITTED에 격리 설정 및 해제 보조 노트에

에서 끝이 나에게 분명히 의심스러운 것 같다. 격리 수준은 다음과 같은 진술에 차이가 있으므로 모든 절차에서이 표준 방법입니다 만들 것 그것은 아닌 것 같아이 경우

? 그렇다면 잠재적 인 문제점을 알고 있습니까? 무슨 일이 트리거가 비활성화되어 동안 테이블을 수정하는 또 다른 동시 트랜잭션을 중지하는 것입니다 해제 트리거에 관한

?

1

ALTER TABLE Lending.HMDA DISABLE TRIGGER Lending.utrHMDAAudit; 

ALTER TABLE Lending.HMDA ENABLE TRIGGER Lending.utrHMDAAudit; 

해야하지만 트리거는 정말 Lending.utrHMDAAudit 이름은?

또한

당신은 당신의 업데이트는 PROC에 실패 할 경우 트리거가 비활성화 잘 될 것 알아? 귀하의 시저가 오류 처리를하지 않고, 제약 조건 위반이 일괄 처리를 중단하고 트리거를 해제하고 시저 호출 후에 트리거를 활성화하고

+1

MSDN에 따르면 ALTER TABLE은 필요하지 않습니다. http://msdn.microsoft.com/en-us/library/ms189748.aspx – dcp