Udostępnij za pomocą


Konfiguracja serwera: nie zezwalaj na wyniki z wyzwalaczy

Dotyczy:programu SQL Server

disallow results from triggers Użyj opcji , aby określić, czy wyzwalacze zwracają zestawy wyników. Wyzwalacze zwracające zestawy wyników mogą powodować nieoczekiwane zachowanie w aplikacjach, które nie są przeznaczone do pracy z nimi.

Ważny

Możliwość zwracania zestawów wyników z wyzwalaczy zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj zwracania zestawów wyników z wyzwalaczy w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie to robią. Aby zapobiec zwracaniu zestawów wyników przez wyzwalacze, zmień opcję wyłącz zwracanie wyników przez wyzwalacze na wartość 1. Ustawienie domyślne dla opcji Nie zezwalaj na wyniki z wyzwalaczy zostanie ustawione na 1 w przyszłej wersji programu SQL Server.

W przypadku ustawienia 1na wartość , opcja jest ustawiona disallow results from triggers na ONwartość . Ustawieniem domyślnym dla tej opcji jest 0 (OFF). Jeśli ta opcja jest ustawiona na 1 (ON), każda próba wywołania wyzwalacza w celu zwrócenia zestawu wyników zakończy się niepowodzeniem, a użytkownik otrzyma następujący komunikat o błędzie:

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.

Opcja disallow results from triggers jest stosowana na poziomie wystąpienia programu SQL Server i określa zachowanie wszystkich istniejących wyzwalaczy w ramach wystąpienia.

Opcja disallow results from triggers jest opcją zaawansowaną. Jeśli używasz sp_configure procedury składowanej systemu do zmiany ustawienia, możesz zmienić nie zezwalanie na wyniki z wyzwalaczy tylko wtedy, gdy show advanced options jest ustawiona na 1wartość . Ustawienie zostanie zastosowane natychmiast bez ponownego uruchomienia serwera.

Możesz sprawdzić, czy opcja jest poprawnie ustawiona, używając następującego kodu Transact-SQL:

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