disallow results from triggers (opzione di configurazione del server)

Si applica a:SQL Server

L'opzione Disallow Results From Triggers consente di specificare se i trigger debbano o meno restituire set di risultati. I trigger che restituiscono set di risultati possono provocare comportamenti imprevisti nelle applicazioni che non sono state progettate per il loro utilizzo.

Importante

Nelle versioni future di SQL Server la possibilità di ottenere set di risultati dai trigger non sarà più disponibile. Evitare di restituire set di risultati dai trigger in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni che attualmente li restituiscono. Per impedire che i trigger restituiscano set di risultati, impostare l'opzione disallow results from triggers (Non consentire risultati dai trigger) su 1. L'impostazione predefinita per l'opzione Disallow results from triggers (Non consentire i risultati dai trigger) verrà impostata 1 su in una versione futura di SQL Server.

Se il valore è 1, l'opzione Disallow Results From Triggers è impostata su ON. L'impostazione predefinita per questa opzione è 0 (OFF). Se l'opzione è impostata su1 (ON), qualsiasi tentativo da parte di un trigger di restituire un set di risultati ha esito negativo e l'utente riceve il messaggio di errore seguente:

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.

L'opzione disallow results from triggers viene applicata a livello di istanza di SQL Server e determina il comportamento di tutti i trigger esistenti nell'istanza.

Disallow Results From Triggers è un'opzione avanzata. Se per modificare l'impostazione si usa la stored procedure di sistema sp_configure, sarà possibile modificare Disallow Results From Triggers solo quando il valore di show advanced options è impostato su 1. L'impostazione diventa effettiva immediatamente e non richiede il riavvio del server.

È possibile verificare se l'opzione è impostata correttamente usando il codice Transact-SQL seguente:

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

Vedi anche