disallow results from triggers (opción de configuración del servidor)
Se aplica a: SQL Server
Utilice la opción disallow results from triggers para controlar si los desencadenadores devuelven conjuntos de resultados. Los desencadenadores que devuelven conjuntos de resultados pueden provocar un comportamiento inesperado en aplicaciones que no están diseñadas para utilizarlos.
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 el valor se establece en 1
, la opción disallow results from triggers 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 opción disallow results from triggers se aplica en el nivel de instancia de SQL Server y determina el comportamiento de todos los desencadenadores existentes en la instancia.
disallow results from triggers es una opción avanzada. Si va a usar el procedimiento almacenado del sistema sp_configure
para cambiar la configuración, solo puede cambiar el valor de la opción disallow results from triggers si show advanced options está establecido en 1
. 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 is an advanced option so that must be enabled first
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
-- Set the disallow results from triggers option
EXEC sp_configure 'disallow results from triggers', 1;
EXEC 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