Serverkonfiguration: disallow results from triggers

Gilt für:SQL Server

Verwenden Sie die disallow results from triggers-Option, um zu steuern, ob Trigger Ergebnismengen zurückgeben. Trigger, die Resultsets zurückgeben, können unerwartetes Verhalten in Anwendungen verursachen, die nicht für die Arbeit mit ihnen konzipiert sind.

Wichtig

Die Fähigkeit, Resultsets aus Triggern zurückzugeben, wird in einer zukünftigen Version von SQL Serverentfernt. Vermeiden Sie deshalb bei Neuentwicklungen, Resultsets aus Triggern zurückzugeben, und planen Sie die Änderung von Anwendungen, in denen dies derzeit verwendet wird. Ändern Sie die Option „disallow results from triggers“ in 1, um zu verhindern, dass Trigger Resultsets zurückgeben. Die Standardeinstellung für die Option „disallow results from triggers“ wird in einer zukünftigen Version von SQL Server auf 1 festgelegt.

Wenn auf 1 festgelegt, wird die Option disallow results from triggers auf ON festgelegt. Die Standardeinstellung für diese Option ist 0 (OFF). Wenn diese Option auf 1 (ON) festgelegt ist, schlägt jeder Versuch eines Triggers, eine Ergebnismenge zurückzugeben, fehl, und der Benutzer erhält die folgende Fehlermeldung:

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.

Die disallow results from triggers Option wird auf SQL Server-Instanzebene angewendet und bestimmt das Verhalten für alle vorhandenen Trigger innerhalb der Instanz.

Bei der Option disallow results from triggers handelt es sich um eine erweiterte Option. Wenn Sie die gespeicherte Systemprozedur sp_configure verwenden, um die Einstellung zu ändern, können Sie „disallow results from triggers“ nur ändern, wenn show advanced options auf 1 festgelegt ist. Die Einstellung tritt ohne Neustarten des Servers sofort in Kraft.

Sie können überprüfen, ob die Option ordnungsgemäß festgelegt ist, indem Sie den folgenden Transact-SQL-Code verwenden:

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