Freigeben über


Serverkonfiguration: Ergebnisse von Triggern nicht zulassen

Gilt für:SQL Server

Verwenden Sie die disallow results from triggers Option, um zu steuern, ob Trigger Resultsets 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.

Bei Festlegung auf 1, wird die disallow results from triggers Option auf ON. Die Standardeinstellung für diese Option ist 0 (OFF). Wenn diese Option auf 1 (ON) festgelegt ist, können Trigger keine Resultsets zurückgeben, und es wird folgende Fehlermeldung ausgegeben:

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 sp_configure gespeicherte Systemprozedur verwenden, um die Einstellung zu ändern, können Sie die Ergebnisse von Triggern nur dann nicht zulassen, wenn show advanced options sie 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