2009-09-07 15 views
98

Quiero crear un proceso como el siguiente pero tiene un error en la sintaxis. ¿Podría alguien señalar el problema?Deshabilitar Activar el servidor SQL de activación

Create PROCEDURE [dbo].[my_proc] AS 

BEGIN 

DISABLE TRIGGER dbo.tr_name ON dbo.table_name 

-- some update statement 

ENABLE TRIGGER dbo.tr_name ON dbo.table_name 

END 

** Error Message : Incorrect syntax near 'ENABLE'. 

Respuesta

189

utilizar los siguientes comandos en su lugar:

ALTER TABLE table_name DISABLE TRIGGER tr_name 

ALTER TABLE table_name ENABLE TRIGGER tr_name 
+0

¿Para qué versiones de SqlServer es bueno? no funciona para mí, mientras 'DISABLE TRIGGER [dbo]. [tr_name] en [schema]. [table_name]' funcionó – Maslow

+0

Funciona para mí (Sql Server 2014). –

+0

Tu respuesta es correcta. Pero en realidad las declaraciones de @pang no necesitan ninguna corrección en lugar de un simple ';'! Prefiero usar 'ENABLE Trigger'. Es aplicable en todos los servidores SQL a partir de 2008. –

53

La línea antes tiene que terminar con un ; porque en SQL DISABLEis not a keyword. Por ejemplo:

BEGIN 
; 
DISABLE TRIGGER ... 
+7

Prefiero esta respuesta. Soluciona el problema y ofrece la solución en lugar de una solución alternativa. Si bien las soluciones tienen su lugar, es importante entender por qué se produjo un error en lugar de seguir ciegamente una solución alternativa sin contexto. – Bpainter

+2

Esto debe marcarse como la respuesta correcta. – eddiewould

11

Como mencionó Mark, la instrucción anterior debe terminar en punto y coma. Así que usted puede utilizar:

; DISABLE TRIGGER dbo.tr_name ON dbo.table_name 
0

A continuación se muestra la forma más sencilla

Pruebe el código

ALTER TRIGGER trigger_name DISABLE

Eso es todo :)

0

después del disparo o desencadenar DESACTIVADO ACTIVADO en una nueva línea escribir GO, Ejemplo:

DISABLE TRIGGER dbo.tr_name ON dbo.table_name 

GO 
-- some update statement 

ENABLE TRIGGER dbo.tr_name ON dbo.table_name 

GO 
Cuestiones relacionadas