Неверные операторы TSQL DISABLE и ENABLE - PullRequest
0 голосов
/ 03 августа 2010
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 неверен. Почему?

Ответы [ 2 ]

1 голос
/ 03 августа 2010

Вам нужно несколько точек с запятой (в конце оператора перед DISABLE и в конце оператора до ENABLE)

Если заметить, что установка изоляции на READ UNCOMMITTED и отключение триггеров кажутся мне весьма сомнительными.

В этом случае уровень изоляции, кажется, не будет иметь никакого значения для следующих утверждений, так является ли это стандартной практикой во всех ваших процедурах? Если да, то знаете ли вы о возможных проблемах с ним?

Что касается отключения триггера, что означает остановку другой параллельной транзакции, изменяющей таблицу, пока триггер отключен?

1 голос
/ 03 августа 2010

должно быть

ALTER TABLE Lending.HMDA DISABLE TRIGGER Lending.utrHMDAAudit; 

ALTER TABLE Lending.HMDA ENABLE TRIGGER Lending.utrHMDAAudit;

но действительно ли ваш триггер называется Lending.utrHMDAAudit?

Также

Вы знаете, что если ваше обновление завершится неудачно в процессе, триггер будет отключен, верно? У вашего процесса нет обработки ошибок, нарушение ограничения прервет пакет, а ваш триггер отключен

Лучше отключить и включить триггер после вызова процедуры и до

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...