Sdílet prostřednictvím


Konfigurace serveru: Zakázat výsledky z triggerů

platí pro:SQL Server

disallow results from triggers Pomocí možnosti můžete řídit, jestli triggery vrací sady výsledků. Triggery, které vracejí sady výsledků, můžou způsobit neočekávané chování v aplikacích, které s nimi nejsou navržené.

Důležitý

Možnost vrácení sad výsledků z triggerů se odebere v budoucí verzi SQL Serveru. Vyhněte se vracení sad výsledků z triggerů v nové vývojové práci a naplánujte úpravu aplikací, které to v současné době dělají. Chcete-li zabránit triggerům v vrácení sad výsledků, změňte možnost zakázat výsledky z triggerů na hodnotu 1. Výchozí nastavení pro nepovolení výsledků z možností triggerů bude nastaveno na 1 v budoucí verzi SQL Serveru.

Pokud je tato možnost nastavená 1na hodnotu , je nastavena disallow results from triggers na ONhodnotu . Výchozí nastavení této možnosti je 0 (OFF). Pokud je tato možnost nastavená na 1 (ON), jakýkoli pokus triggeru o vrácení sady výsledků selže a uživatel obdrží následující chybovou zprávu:

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.

Tato disallow results from triggers možnost se použije na úrovni instance SQL Serveru a určuje chování všech existujících triggerů v instanci.

Tato disallow results from triggers možnost je rozšířená. Pokud ke změně nastavení používáte sp_configure systémovou uloženou proceduru, můžete změnit výsledky z aktivačních událostí pouze v případě, že show advanced options je nastavená hodnota 1. Nastavení se projeví okamžitě bez restartování serveru.

Pomocí následujícího Transact-SQL kódu můžete zkontrolovat, jestli je tato možnost správně nastavená:

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