계산 열의 인덱싱된 뷰와 인덱스는 나중에 참조하기 위해 데이터베이스에 결과를 저장합니다. 저장된 결과는 인덱싱된 뷰 또는 인덱싱된 계산 열을 참조하는 모든 연결이 해당 인덱스를 만든 연결과 동일한 결과 집합을 생성할 수 있는 경우에만 유효합니다. 저장된 결과가 올바르게 유지 관리되도록 하고 일관된 결과를 반환하도록 하려면 다음 조건이 발생할 때마다 다음 표의 SET 옵션을 필요한 값 열에 표시된 값으로 설정해야 합니다.
-
뷰 또는 계산 열에 대해 인덱스가 생성됩니다.
-
계산 열이 정의되었고 PERSISTED가 지정되었습니다.
-
INSERT, UPDATE 또는 DELETE 연산에 따라 인덱싱된 뷰 또는 인덱싱된 계산 열에 저장된 데이터 값이 수정됩니다. 여기에는 BCP, DTS, 복제 및 분산 쿼리와 같은 연산이 포함됩니다.
-
쿼리 최적화 프로그램에서 쿼리 실행 계획의 인덱스를 사용합니다.
-
인덱싱된 뷰의 경우 ANSI_NULLS 및 QUOTED_IDENTIFIER 옵션은 뷰 메타데이터와 함께 저장되기 때문에 뷰를 만들 때 ON으로 설정되어야 합니다.
SET 옵션
필요한 값
기본 서버 값
기본
OLE DB 및 ODBC 값기본
DB-Library 값ANSI_NULLS
ON
OFF
ON
OFF
ANSI_PADDING
ON
ON
ON
OFF
ANSI_WARNINGS*
ON
OFF
ON
OFF
ARITHABORT
ON
ON
OFF
OFF
CONCAT_NULL_YIELDS_NULL
ON
OFF
ON
OFF
NUMERIC_ROUNDABORT
OFF
OFF
OFF
OFF
QUOTED_IDENTIFIER
ON
OFF
ON
OFF
*데이터베이스 호환성 수준이 90 이상으로 설정된 경우 ANSI_WARNINGS를 ON으로 설정하면 암시적으로 ARITHABORT가 ON으로 설정됩니다. 데이터베이스 호환성 수준이 80 이하로 설정된 경우에는 명시적으로 ARITHABORT 옵션을 ON으로 설정해야 합니다.
SET 옵션을 잘못 설정하면 다음 상황이 발생할 수 있습니다.
-
데이터베이스 엔진에서 오류를 생성하고 인덱스에 저장된 데이터 값을 변경하는 INSERT, UPDATE 또는 DELETE 문을 롤백합니다.
-
쿼리 최적화 프로그램에서 Transact-SQL 문의 실행 계획에 있는 인덱스를 고려하지 않습니다.
-
인덱싱된 뷰 또는 계산 열을 만들 수 없습니다.
SQL Server Management Studio, Integration Services, 복제 및 대량 복사 작업을 비롯한 대부분의 응용 프로그램에서는 SQL Server용 OLE DB 공급자나 SQL Server ODBC 드라이버를 사용하여 SQL Server 인스턴스에 연결합니다. OLE DB 및 ODBC 기본 설정은 뷰 또는 계산 열의 인덱스에 필요한 6개의 SET 옵션에 대해 올바릅니다. OLE DB 및 ODBC의 기본값은 위의 표를 참조하십시오. 또한 이러한 설정은 ISO 표준 규칙에 따르므로 SQL Server에 권장되는 설정입니다. 자세한 내용은 클라이언트 네트워크 구성을 참조하십시오.
참고 |
---|
SQL Server의 일부 유틸리티는 하나 이상의 ANSI 설정을 OFF로 지정하여 이전 버전의 유틸리티와 호환되도록 합니다. |
SET 옵션의 ON 또는 OFF 설정은 여러 수준으로 지정할 수 있습니다. 각 세션 옵션의 마지막 설정은 옵션을 설정하는 우선 순위가 가장 높은 작업에 의해 결정됩니다. 세션 설정 작업의 우선 순위는 다음과 같습니다. 우선 순위가 가장 높은 작업이 목록의 맨 위에 있습니다.
-
응용 프로그램이 서버에 연결한 다음 SET 문을 실행하여 기본 설정을 명시적으로 덮어쓸 수 있습니다. SET 문은 이전의 모든 설정을 덮어쓰므로 응용 프로그램이 실행될 때 옵션을 동적으로 설정하고 해제하는 데 사용할 수 있습니다. 이러한 옵션 설정은 현재 연결 세션에만 적용할 수 있습니다.
-
OLE DB 및 ODBC 응용 프로그램은 연결 문자열에서 옵션 설정을 지정하여 연결 시 적용되는 옵션 설정을 지정할 수 있습니다. 이러한 옵션 설정은 현재 연결 세션에만 적용할 수 있습니다.
-
제어판의 ODBC 응용 프로그램 또는 ODBC SQLConfigDataSource 함수를 사용하여 SQL Server ODBC 데이터 원본에 대해 지정한 SET 옵션
-
데이터베이스의 기본 설정. ALTER DATABASE 또는 SQL Server Management Studio의 개체 탐색기를 사용하여 이 값을 지정할 수 있습니다.
-
서버의 기본 설정. sp_configure 또는 SQL Server Management Studio의 개체 탐색기를 통해 user options라는 서버 구성 옵션을 설정하여 이 값을 지정할 수 있습니다.
예를 들어 ANSI_NULLS에 대한 ODBC 기본값은 ON이지만 ODBC 연결 문자열에서 이 옵션을 OFF로 설정하거나 데이터베이스에 연결한 후 SET 문을 사용하여 이 값을 무시할 수 있습니다.
SET 문은 세션 옵션을 동적으로 변경하므로 뷰 및 인덱싱된 계산 열에 인덱스가 있는 데이터베이스에서 SET 문을 실행할 경우에는 주의해야 합니다. 예를 들어 응용 프로그램은 인덱싱된 뷰 또는 인덱싱된 계산 열이 참조되도록 허용하는 기본 설정으로 연결을 수립할 수 있습니다. 그러나 이 연결에서 첫 번째 문이 SET ANSI_WARNINGS OFF인 저장 프로시저나 트리거를 호출하면 SET 문은 ANSI_WARNINGS에 대한 이전의 기본값 또는 설정을 덮어쓰게 됩니다. 이 경우 최적화 프로그램에서는 저장 프로시저 또는 트리거의 문을 처리할 때 인덱싱된 뷰나 인덱싱된 계산 열을 모두 무시합니다.
결과 집합에 영향을 줄 수 있는 세 가지 세션 옵션으로는 DATEFIRST, DATEFORMAT 및 LANGUAGE가 있습니다. 이들 옵션의 변경에 영향을 받는 결과를 갖는 함수는 확정적이지 않은 함수로 분류되므로 인덱싱된 뷰 또는 인덱싱된 계산 열에서 사용할 수 없습니다.
'IT > MS-SQL' 카테고리의 다른 글
OPENQUERY (0) | 2011.05.18 |
---|---|
SP 실행 권한 문제 (0) | 2011.03.08 |
MSSQL 단축키 (0) | 2011.03.02 |
내부 프로시저 실행시킬 때 EXECUTE 주의점 (0) | 2011.02.28 |
MSSQL SELECT절에서 두번째로 높은 값 찾기 (0) | 2011.02.24 |