sql >> Base de Datos >  >> RDS >> Sqlserver

¿Hay alguna manera de deshabilitar un activador de SQL Server solo para un ámbito de ejecución particular?

Acabo de ver este artículo recientemente destacado en el boletín de SQL Server Central y parece ofrecer una forma que puede resultarle útil utilizando Context_Info en la conexión:

http://www.mssqltips.com/tip.asp?tip=1591

EDITADO por Terrapin:

El enlace anterior incluye el siguiente código:

USE AdventureWorks;  
GO  
-- creating the table in AdventureWorks database  
IF OBJECT_ID('dbo.Table1') IS NOT NULL  
DROP TABLE dbo.Table1  
GO  
CREATE TABLE dbo.Table1(ID INT)  
GO   
-- Creating a trigger  
CREATE TRIGGER TR_Test ON dbo.Table1 FOR INSERT,UPDATE,DELETE  
AS  
DECLARE @Cinfo VARBINARY(128)  
SELECT @Cinfo = Context_Info()  
IF @Cinfo = 0x55555  
RETURN  
PRINT 'Trigger Executed'  
-- Actual code goes here  
-- For simplicity, I did not include any code  
GO  

Si desea evitar que se ejecute el disparador, puede hacer lo siguiente:

SET Context_Info 0x55555 
INSERT dbo.Table1 VALUES(100)