SQL Server SET NOCOUNT ON-Anweisung mit Beispielen

SET NOCOUNT ON ist eine set -Anweisung, die die Meldung verhindert, dass die Anzahl der von T-SQL-Abfrageanweisungen betroffenen Zeilen angezeigt wird. Dies wird in gespeicherten Prozeduren und Triggern verwendet, um die Anzeige der betroffenen Zeilen zu vermeiden. Die Verwendung von SET NOCOUNT ON innerhalb einer gespeicherten Prozedur kann die Leistung der gespeicherten Prozedur erheblich verbessern.

NOCOUNT EINSTELLEN: Dies verhindert, dass die Nachricht angezeigt wird, die die Anzahl der betroffenen Zeilen enthält.
NOCOUNT AUS setzen: Dies zeigt die Anzahl der betroffenen Zeilen in einem Meldungsfenster.

SET NOCOUNT ON verhindert das Senden von DONE_IN_PROC-Nachrichten an den Client für jede Anweisung in einer gespeicherten Prozedur.

Für gespeicherte Prozeduren, die mehrere Anweisungen enthalten, die nicht viele tatsächliche Daten zurückgeben, oder für Prozeduren, die Transact-SQL-Schleifen enthalten, kann das Festlegen von SET NOCOUNT auf ON eine erhebliche Leistungssteigerung bewirken, da der Netzwerkverkehr stark reduziert wird.

SET NOCOUNT EIN / AUS mit einem Beispiel

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

Die Verwendung von SET NOCOUNT ON in den ersten T-SQL-Anweisungen verhindert, dass die Anzahl der betroffenen Zeilen angezeigt wird.

SET NOCOUNT mit @@ ROWCOUNT-Funktion

Dies hat keine Auswirkungen auf die @@ Rowcount-Funktion, die die Anzahl der betroffenen Zeilen in einem Stapel anzeigt.

SET NOCOUNT ON Declare @Temp Table (Number INT); INSERT @ Temp-Werte (1), (2), (3), (4); SELECT @@ ROWCOUNT als NoOfRowsAffected; NOCOUNT AUS setzen 

Durch Verwendung der Funktion @@ ROWCOUNT in SET NOCOUNT ON wird der Wert von @@ ROWCOUNT nicht zurückgesetzt. In der Spalte NoOfRowsAffected werden vier Zeilen angezeigt, die von der vorherigen INSERT-Anweisung betroffen waren.

Verwenden von SET NOCOUNT ON / OFF innerhalb einer gespeicherten Prozedur

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE ABC_INSERT_DATA AS BEGIN - SET NOCOUNT ON wurde hinzugefügt, um zu verhindern, dass zusätzliche Ergebnismengen mit SELECT-Anweisungen interferieren. NOCOUNT EINSTELLEN; @Temp Table (Number INT) deklarieren; INSERT @ Temp-Werte (1), (2), (3), (4); SELECT * FROM @Temp; ENDE GEHEN 

Ausführen der gespeicherten Prozedur oben

EXEC ABC_INSERT_DATA 

In der Abbildung oben sehen Sie, dass die ausgeführte gespeicherte Prozedur die Anzahl der betroffenen Zeilen nicht anzeigt. Die Verwendung von SET NOCOUNT ON in gespeicherten Prozeduren wird als bewährte Methode für die Leistungsoptimierung in SQL Server empfohlen.

Weitere nützliche Informationen finden Sie in unseren SQL Server-Archivartikeln.