SET选项...他们被存储在哪里(SET OPTIONS…where are they stored

2019-08-01 02:24发布

快速的问题...

当被存储在数据库中的SET选项的值的SP,Func键,触发等? 如果他们从全局设置不同?

SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET NUMERIC_ROUNDABORT OFF

我知道一个数据库的全局设置存储在sys.databases中查看。 但是,关于每个存储过程或其他物体是什么。

使用[SomeDB]

SET ARITHABORT OFF
SET CONCAT_NULL_YIELDS_NULL OFF
SET QUOTED_IDENTIFIER OFF

CREATE usp_SampleProc

开始
- 执行一些动作
结束

我看到一对夫妇可以使用以下retrived:

SELECT OBJECTPROPERTY(OBJECT_ID( '过程名'), 'ExecIsQuotedIdentOn')
SELECT OBJECTPROPERTY(OBJECT_ID( '过程名'), 'ExecIsAnsiNullsOn')

哪里休息...被他们甚至存储每个存储过程.....呢?
谢谢,
_Ub

Answer 1:

那些适用于程序,就像ANSI_NULLSQUOTED_IDENTIFIERsys.sql_module小号 ,在那里它们被从检索OBJECTPROPERTY

那些适用于数据库和每个数据库都设置在可sys.databases

那些适用于会话中使用sys.dm_exec_sessions

到底什么是真正被应用于从设置到设置依赖,并且改写,默认的规则是非常复杂的,至少可以说。 有些客户端驱动程序设定打开/关闭自动选项。 不一样的选择,而不是相同的默认值,从客户端依赖于客户端(ODBC,OLEDB SNAC,SqlClient中等等)。 该通用规则是:

  1. 数据库选项覆盖实例选项。
  2. 一个SET选项会覆盖数据库选项。
  3. 一个提示覆盖一个SET选项。


文章来源: SET OPTIONS…where are they stored