Compartir a través de


Configuración del servidor: no permitir resultados de desencadenadores

Se aplica a:SQL Server

Use la disallow results from triggers opción para controlar si los desencadenadores devuelven conjuntos de resultados. Los desencadenadores que devuelven conjuntos de resultados pueden provocar un comportamiento inesperado en las aplicaciones que no están diseñadas para trabajar con ellos.

Importante

La capacidad de devolver conjuntos de resultados desde desencadenadores se eliminará en una versión posterior de SQL Server. Evite la devolución de conjuntos de resultados desde desencadenadores en los nuevos trabajos de desarrollo y piense en modificar las aplicaciones que la usan actualmente. Para evitar que los desencadenadores devuelvan conjuntos de resultados, cambie el valor de la opción disallow results from triggers a 1. La configuración predeterminada de la opción disallow results from triggers se establecerá en 1 en una versión futura de SQL Server.

Cuando se establece en 1, la disallow results from triggers opción se establece en ON. La configuración predeterminada de esta opción es 0 (OFF). Si esta opción se establece en 1 (ON), se producirá un error cuando un desencadenador intente devolver un conjunto de resultados y el usuario recibirá el mensaje de error siguiente:

Msg 524, Level 16, State 1, Procedure <Procedure Name>, Line <Line#>

A trigger returned a resultset and the server option 'disallow_results_from_triggers' is true.

La disallow results from triggers opción se aplica en el nivel de instancia de SQL Server y determina el comportamiento de todos los desencadenadores existentes dentro de la instancia.

La opción disallow results from triggers es una opción avanzada. Si usa el procedimiento almacenado del sp_configure sistema para cambiar la configuración, puede cambiar no permitir los resultados de los desencadenadores solo cuando show advanced options se establece 1en . La configuración surte efecto inmediatamente, sin necesidad de reiniciar un servidor.

Para comprobar si la opción se estableció correctamente, use el código de Transact-SQL siguiente:

-- Check the current value for the option
SELECT [name], value_in_use
FROM sys.configurations
WHERE [name] LIKE 'disallow results from triggers';

-- Set the disallow results from triggers option to 1. This option is an advanced option so that must be enabled first
EXECUTE sp_configure 'show advanced options', 1;

RECONFIGURE;
GO

-- Set the disallow results from triggers option
EXECUTE sp_configure 'disallow results from triggers', 1;
EXECUTE sp_configure 'show advanced options', 0;
RECONFIGURE;
GO

-- Validate that the option is set to 1
SELECT [name], value_in_use
FROM sys.configurations
WHERE [name] LIKE 'disallow results from triggers';
GO