SET NOCOUNT ON es una declaración de conjunto que evita el mensaje que muestra el número de filas afectadas por las declaraciones de consulta de T-SQL. Esto se usa dentro de procedimientos almacenados y activadores para evitar mostrar el mensaje de las filas afectadas. El uso de SET NOCOUNT ON dentro de un procedimiento almacenado puede mejorar el rendimiento del procedimiento almacenado en un margen significativo.
CONFIGURAR NOCOUNT EN: Esto evita que se muestre el mensaje que contiene el número de filas afectadas.
CONFIGURAR NOCOUNT OFF: Esto muestra el número de filas afectadas en una ventana de mensaje.
SET NOCOUNT ON evita el envío de mensajes DONE_IN_PROC al cliente para cada declaración en un procedimiento almacenado.
Para los procedimientos almacenados que contienen varias declaraciones que no devuelven muchos datos reales o para los procedimientos que contienen bucles Transact-SQL, establecer SET NOCOUNT en ON puede proporcionar un aumento significativo en el rendimiento, porque el tráfico de red se reduce considerablemente.
CONFIGURAR NOCOUNT ON / OFF con un ejemplo
ESTABLECE NOCOUNT EN SELECCIONAR EL TOP 10 * DE sys.procedures; CONFIGURAR NOCOUNT DESACTIVADO SELECCIONE EL TOP 10 * DE sys.procedures;
El uso de SET NOCOUNT ON en las primeras sentencias de T-SQL impide mostrar el número de filas afectadas.
SET NOCOUNT con la función @@ ROWCOUNT
Esto no tiene ningún impacto en la función @@ Rowcount, que muestra el número de filas afectadas dentro de un lote.
ESTABLECER NOCOUNT ON Declare @Temp Table (Número INT); INSERT INTO @Temp Values (1), (2), (3), (4); SELECCIONE @@ ROWCOUNT como NoOfRowsAffected; CONFIGURAR NOCOUNT OFF
El uso de la función @@ ROWCOUNT dentro de SET NOCOUNT ON no restablece el valor de @@ ROWCOUNT. La columna NoOfRowsAffected muestra que cuatro filas se vieron afectadas por la instrucción INSERT anterior.
Uso de SET NOCOUNT ON / OFF dentro de un procedimiento almacenado
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE ABC_INSERT_DATA COMO COMIENZO: se agrega SET NOCOUNT ON para evitar que los conjuntos de resultados adicionales interfieran con las declaraciones SELECT. CONFIGURAR NOCOUNT ENCENDIDO; Declare @Temp Table (Número INT); INSERT INTO @Temp Values (1), (2), (3), (4); SELECT * FROM @Temp; Fin ir
Ejecutando el procedimiento almacenado arriba
EXEC ABC_INSERT_DATA
Puede ver en la captura de pantalla anterior que el procedimiento almacenado ejecutado no muestra el número de filas afectadas en el mensaje. Se recomienda usar SET NOCOUNT ON dentro de los procedimientos almacenados como la mejor práctica para el ajuste del rendimiento en SQL Server.
Puede navegar por nuestros artículos de archivo de SQL Server para obtener más información útil.