Delen via


SET NOCOUNT (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMagazijn in Microsoft FabricSQL-database in Microsoft Fabric

Bepaalt of een bericht dat het aantal rijen toont dat door een Transact-SQL-instructie of opgeslagen procedure wordt beïnvloed, wordt teruggegeven na de resultaatset. Dit bericht is een extra resultaatset.

Transact-SQL syntaxis-conventies

Syntaxis

SET NOCOUNT { ON | OFF }

Opmerkingen

Wanneer SET NOCOUNT is ON, wordt de telling niet teruggegeven. Wanneer SET NOCOUNT is OFF, wordt de telling teruggegeven.

De @@ROWCOUNT functie wordt bijgewerkt zelfs wanneer SET NOCOUNT is ON.

SET NOCOUNT ON voorkomt het verzenden van DONEINPROC berichten naar de client voor elke instructie in een opgeslagen procedure. Voor opgeslagen procedures die meerdere statements bevatten die weinig daadwerkelijke data teruggeven, of voor procedures die Transact-SQL lussen bevatten, kan instellen SET NOCOUNT op ON een aanzienlijke prestatieverbetering bieden, omdat het netwerkverkeer sterk wordt verminderd.

De instelling die door SET NOCOUNT wordt gespecificeerd, is van kracht bij uitvoerings- of uitvoeringstijd en niet bij parsetijd.

Om de huidige instelling voor deze instelling te bekijken, voert u de volgende query uit.

DECLARE @NOCOUNT VARCHAR(3) = 'OFF';

IF ((512 & @@OPTIONS) = 512)
    SET @NOCOUNT = 'ON';

SELECT @NOCOUNT AS NOCOUNT;

Permissions

Vereist lidmaatschap van de openbare rol.

Voorbeelden

Het volgende voorbeeld voorkomt dat het bericht over het aantal getroffen rijen wordt weergegeven. In het volgende voorbeeld (5 rows affected) wordt alleen teruggegeven aan clients vanuit de eerste SELECT stelling.

USE AdventureWorks2022;
GO

SET NOCOUNT OFF;
GO

-- Display the count message.
SELECT TOP (5) LastName
FROM Person.Person
WHERE LastName LIKE 'A%';
GO

-- SET NOCOUNT to ON to no longer display the count message.
SET NOCOUNT ON;
GO

SELECT TOP (5) LastName
FROM Person.Person
WHERE LastName LIKE 'A%';
GO

-- Reset SET NOCOUNT to OFF
SET NOCOUNT OFF;
GO