2009-08-12 8 views
8

빠른 질문 ...SET 옵션 .... 저장 위치

SP, Func, Trigger 등의 데이터베이스에 저장된 SET OPTIONS의 값은 어디에 있습니까? 글로벌 설정과 다른 경우?

SET의 ARITHABORT OFF
SET의 NUMERIC_ROUNDABORT

ON
SET의 ANSI_WARNINGS ON
SET의 ANSI_PADDING ON
SET의 ANSI_NULLS ON
SET의 QUOTED_IDENTIFIER ON
SET의 CONCAT_NULL_YIELDS_NULL에 나는 데이터베이스에 대한 전역 설정이 알고 sys.databases 뷰에 저장됩니다. 그러나 각 Stored Proc 또는 다른 객체는 어떻습니까? 어떤 작업을 수행 -

USE [SomeDB]

SET의 ARITHABORT는 OFF
SET의 CONCAT_NULL_YIELDS_NULL OFF


AS usp_SampleProc
를 만들 GO OFF
SET의 QUOTED_IDENTIFIER 는
시작
(210) END 나는 부부가 사용 자궁강 될 수 있다고 볼 수

:

SELECT OBJECTPROPERTY (OBJECT_ID ('PROCEDURE_NAME'), 'ExecIsQuotedIdentOn')
SELECT OBJECTPROPERTY (OBJECT_ID ('PROCEDURE_NAME'), 'ExecIsAnsiNullsOn')

나머지는 ... 각각의 저장 프로 시저에 저장되어 있습니까?
감사,
_Ub

답변

6

그들이 OBJECTPROPERTY에 의해에서 검색 sys.sql_modules,에 ANSI_NULLSQUOTED_IDENTIFIER 같은 절차에 해당되는 자.

데이터베이스에 적용되고 데이터베이스별로 설정되는 값은 sys.databases입니다.

세션에 적용되는 사용자는 sys.dm_exec_sessions입니다.

결국 실제로 적용되는 것은 설정에 따라 다르며 덮어 쓰기 및 기본값의 규칙은 복잡하지 않습니다. 일부 클라이언트 드라이버는 자동으로 옵션을 설정/해제합니다. 동일한 옵션이 아니라 동일한 기본값이 아니라 클라이언트 (ODBC, OleDB, SNAC, SqlClient 등)에 따라 다릅니다. generic rule은 다음과 같습니다.

  1. 데이터베이스 옵션이 인스턴스 옵션보다 우선합니다.
  2. SET 옵션은 데이터베이스 옵션을 무시합니다.
  3. 힌트는 SET 옵션보다 우선합니다.
+0

빠른 응답을 주셔서 감사합니다,하지만 그것은 단지 uses_quoted_identifier is_schema_bound uses_database_collation 을 가지고 무엇 나머지에 대해 ... is_recompiled. _Ub –

+0

무엇에 대해서 SET ARITHABORT ON SET ANSI_WARNINGS ON 특정 절차. 이 두 가지가 내가 더 염려하는 것입니까? –

+1

프로 시저 생성시에만 QUOTED_IDENTIFER 및 ANSI_NULLS 설정이 캡처됩니다. 다른 모든 설정은 현재 세션 값이 적용됩니다. –