Udostępnij za pośrednictwem


nie zezwalaj na wyniki z wyzwalaczy (opcja konfiguracji serwera)

Dotyczy:programu SQL Server

Użyj opcji uniemożliwiającej wyniki z wyzwalaczy, aby kontrolować, 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.

Gdy ustawione jest na wartość 1, opcja blokowania wyników z wyzwalaczy jest ustawiona na ON. 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 nie zezwala na wyniki z wyzwalaczy i jest stosowana na poziomie instancji SQL Server, określając zachowanie wszystkich istniejących wyzwalaczy w tej instancji.

Opcja , która zabrania wyników z wyzwalaczy, jest opcją zaawansowaną. Jeśli używasz procedury składowanej systemu sp_configure do zmiany ustawienia, możesz zabronić zwracania wyników przez wyzwalacze tylko wtedy, gdy opcja 'pokaż zaawansowane opcje' jest ustawiona na 1. 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 is an advanced option so that must be enabled first
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO

-- Set the disallow results from triggers option
EXEC sp_configure 'disallow results from triggers', 1;
EXEC 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

Zobacz też