设置选项....它们存储在哪里

时间:2009-08-12 22:27:08

标签: sql-server sql-server-2005

快速问题......

为SP,Func,Trigger等存储在数据库中的SET OPTIONS的值在哪里?如果它们与全局设置不同?

设置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视图中。但是对于每个Stored Proc或其他对象呢。

USE [SomeDB]
GO

设置ARITHABORT OFF SET CONCAT_NULL_YIELDS_NULL OFF
SET QUOTED_IDENTIFIER OFF GO

创建usp_SampleProc
AS
BEGIN
   - 执行一些行动
结束

我看到一对夫妇可以使用以下方式重审:

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

其余的......他们甚至为每个存储过程存储了.....根本? 谢谢,
_Ub

1 个答案:

答案 0 :(得分:6)

适用于ANSI_NULLSQUOTED_IDENTIFIER等程序的内容位于sys.sql_modulesOBJECTPROPERTY可以从{{1}}检索。

sys.databases中提供了适用于数据库并按数据库设置的数据。

适用于会话的内容可在sys.dm_exec_sessions中找到。

最终实际应用的内容取决于从设置到设置,覆盖规则和默认设置至少是复杂的。某些客户端驱动程序自动设置选项开/关。不同的选项和不同的默认值,取决于客户端到客户端(ODBC,OleDB,SNAC,SqlClient等)。 generic rule是:

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