일괄 처리 실행 환경 및 MARS

MicrosoftSQL Server 2005부터 MARS(Multiple Active Result Sets)를 지원하도록 연결을 설정할 수 있습니다. 이러한 연결에는 기본 일괄 처리 실행 환경이 연관되어 있습니다.

일괄 처리 실행 환경은 다음 구성 요소로 이루어집니다.

  • SET 옵션 값(ANSI_NULLS, DATE_FORMAT, LANGUAGE 및 TEXTSIZE 포함)

  • 보안 컨텍스트(일괄 처리 실행 환경에서 사용자 또는 응용 프로그램 역할)

  • 데이터베이스 컨텍스트(환경에 대한 현재 데이터베이스)

  • 실행 상태 함수(@@ERROR, @@ROWCOUNT, @@FETCH_STATUS 및 @@IDENTITY 포함)

  • 최상위 임시 테이블

특정 연결에 대해 실행을 시작하는 각각의 새 일괄 처리는 기본 환경의 복사본을 받습니다. 일괄 처리가 실행될 때마다 실행 환경의 모든 변경 내용은 특정한 해당 일괄 처리에만 영향을 줍니다. 실행이 완료되면 실행 설정이 기본 환경에 복사됩니다. 순차적으로 실행될 여러 명령을 실행하는 단일 일괄 처리의 경우 관찰되는 동작은 이전 버전의 SQL Server에서 클라이언트나 서버가 관련되는 연결에서 나타나는 동작과 동일합니다.

이전 버전의 SQL Server에서는 지정된 시간에 하나의 일괄 처리만 실행될 수 있었습니다. 따라서 한 일괄 처리에 의해 변경된 일괄 처리 환경은 이후 모든 일괄 처리에 표시되었습니다.

저장 프로시저와 함수의 경우에는 기본 일괄 처리 환경이 연결의 기본값이지만 실행이 완료되더라도 변경된 내용이 해당 연결의 기본 일괄 처리 실행 환경에 다시 복사되지는 않습니다.

예를 들어 두 개의 일괄 처리가 다음과 같이 실행된다고 가정합니다.

--First Batch
SET ARITHABORT ON
SET ANSI_WARNINGS ON
SELECT 1/0
GO
--Second Batch
SET ARITHABORT OFF
SET ANSI_WARNINGS OFF
SELECT 1/0
GO

또한 SET ARITHABORT는 OFF로 설정되고 SET ANSI_WARNINGS는 ON으로 설정된 기본 실행 환경에서 이 연결에 대해 MARS를 사용한다고 가정합니다.

이 연결에서 두 일괄 처리가 모두 동시에 제출되면 이 연결의 기본 일괄 처리 환경 설정에 따라 일괄 처리 실행이 시작됩니다. 실행 중에는 한 일괄 처리의 환경 변경 내용이 다른 일괄 처리의 변경 내용에 영향을 주지 않도록 해당 환경 범위가 지정됩니다. 일괄 처리 실행이 완료되면 결과 환경이 연결 기본값에 다시 복사됩니다. 연결에 대한 결과 기본 환경은 실행을 완료할 마지막 일괄 처리에 따라 달라집니다. 이 환경은 다음에 실행되는 일괄 처리에서 사용하는 환경이 됩니다.