Configuration du serveur : interdire les résultats des déclencheurs

S’applique à :SQL Server

Utilisez l’option disallow results from triggers pour déterminer si les déclencheurs retournent des jeux de résultats. Les déclencheurs qui retournent des jeux de résultats peuvent entraîner un comportement inattendu dans les applications qui ne sont pas conçues pour les utiliser.

Important

La fonctionnalité de renvoi des jeux de résultats à partir de déclencheurs sera éliminée dans une version ultérieure de SQL Server. Évitez de renvoyer des jeux de résultats à partir de déclencheurs dans le cadre de nouveaux développements, et prévoyez de modifier les applications qui le font actuellement. Pour empêcher les déclencheurs de retourner des jeux de résultats, modifiez l’option Interdire les résultats à partir des déclencheurs pour lui attribuant la valeur 1. La valeur par défaut de l’option disallow results from triggers sera 1 dans une version future de SQL Server.

Lorsque la valeur est définie 1, l’option disallow results from triggers est définie sur ON. Le paramètre par défaut de cette option est 0 (OFF). Si cette option est définie sur 1 (ON), toute tentative de la part d'un déclencheur de retourner un ensemble de résultats échoue, et l’utilisateur obtient le message d’erreur suivant :

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.

L’option disallow results from triggers est appliquée au niveau de l’instance SQL Server et détermine le comportement de tous les déclencheurs existants au sein de l’instance.

L’option disallow results from triggers est une option avancée. Si vous utilisez la procédure stockée système sp_configure pour modifier le paramètre, vous ne pouvez modifier l’option d’interdiction des résultats des déclencheurs que lorsque show advanced options est défini sur 1. Le paramètre prend effet immédiatement (sans redémarrage du serveur).

Vous pouvez vérifier si l’option est correctement définie en utilisant le code Transact-SQL suivant :

-- 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