SQL Server SET NOCOUNT ON Istruzione con esempi

SET NOCOUNT ON è un'istruzione set che impedisce il messaggio che mostra il numero di righe interessate dalle istruzioni di query T-SQL. Questo viene utilizzato all'interno di stored procedure e trigger per evitare di mostrare il messaggio delle righe interessate. L'utilizzo di SET NOCOUNT ON all'interno di una stored procedure può migliorare le prestazioni della stored procedure con un margine significativo.

SET NOCOUNT ON: Impedisce che venga visualizzato il messaggio che contiene il numero di righe interessate.
SET NOCOUNT OFF: Mostra il numero di righe interessate in una finestra di messaggio.

SET NOCOUNT ON impedisce l'invio di messaggi DONE_IN_PROC al client per ciascuna istruzione in una stored procedure.

Per le stored procedure che contengono più istruzioni che non restituiscono molti dati effettivi o per procedure che contengono cicli Transact-SQL, l'impostazione di SET NOCOUNT su ON può fornire un significativo aumento delle prestazioni, poiché il traffico di rete viene notevolmente ridotto.

SET NOCOUNT ON / OFF con un esempio

SET NOCOUNT ON SELECT TOP 10 * FROM sys.procedures; SET NOCOUNT OFF SELECT TOP 10 * FROM sys.procedures; 

L'utilizzo di SET NOCOUNT ON nelle prime istruzioni T-SQL impedisce di mostrare il numero di messaggi di righe interessate.

SET NOCOUNT con @@ ROWCOUNT Function

Questo non ha alcun impatto sulla funzione @@ Rowcount che mostra il numero di righe interessate all'interno di un batch.

SET NOCOUNT ON Declare @Temp Table (Number INT); INSERISCI I @Temp Values ​​(1), (2), (3), (4); SELECT @@ ROWCOUNT come NoOfRowsAffected; SET NOCOUNT OFF 

L'utilizzo della funzione @@ ROWCOUNT all'interno di SET NOCOUNT ON non ripristina il valore @@ ROWCOUNT. La colonna NoOfRowsAffected mostra che quattro righe erano interessate dalla precedente istruzione INSERT.

Utilizzo di SET NOCOUNT ON / OFF in una stored procedure

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE ABC_INSERT_DATA COME INIZIALE - SET NOCOUNT ON aggiunto per evitare set di risultati aggiuntivi da - interferendo con le istruzioni SELECT. SET NOCOUNT ON; Dichiara la tabella @Temp (numero INT); INSERISCI I @Temp Values ​​(1), (2), (3), (4); SELEZIONA * DA @Temp; FINE ANDARE 

Esecuzione della stored procedure sopra

EXEC ABC_INSERT_DATA 

È possibile vedere nello screenshot sopra che la stored procedure eseguita non mostra il numero di messaggi di righe interessate. L'utilizzo di SET NOCOUNT ON nelle stored procedure è consigliato come best practice per l'ottimizzazione delle prestazioni in SQL Server.

È possibile sfogliare i nostri articoli di archivio di SQL Server per ulteriori informazioni utili.