"NOCOUNT"는 "PROCEDURE" 및 "TRIGGER" 정의에서 활성화되어야 합니다.

반응형

NOCOUNT는 기본적으로 서버 수준에서 비활성화(OFF)됩니다. 이는 기본적으로 서버가 실행된 SQL 쿼리의 영향을 받은 행 수를 클라이언트에 전송한다는 의미입니다. 이는 대부분의 경우 아무도 이 정보를 읽지 않기 때문에 쓸모가 없습니다.

이 기능을 비활성화하면 일부 네트워크 트래픽이 절약되고 저장 프로시저 및 트리거의 실행 성능이 향상됩니다. 따라서 쿼리가 처리되기 전에 PROCEDURE 및 TRIGGER 정의 시작 부분에 SET NOCOUNT ON을 정의하는 것이 좋습니다.

이 규칙은 NOCOUNT가 설정되지 않거나 PROCEDURE(또는 TRIGGER) 정의의 시작과 SET, IF 또는 DECLARE가 아닌 첫 번째 문 사이에 OFF로 설정된 경우 문제를 발생시킵니다.

좋은 예:

CREATE PROCEDURE dbo.MyProc(@debug  INT)
AS
BEGIN
  DECLARE @var INT;
  IF @debug = 0
    BEGIN
      SET NOCOUNT ON;
    END
  SELECT COUNT(*) FROM MY_TABLE
END;

또는

CREATE TRIGGER MyTrigger ON MyTable
AFTER INSERT
AS
BEGIN
  SET NOCOUNT ON;
  [...]
END;

 

반응형