快速问题......
为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
答案 0 :(得分:6)
适用于ANSI_NULLS
和QUOTED_IDENTIFIER
等程序的内容位于sys.sql_module
s,OBJECTPROPERTY
可以从{{1}}检索。
sys.databases
中提供了适用于数据库并按数据库设置的数据。
适用于会话的内容可在sys.dm_exec_sessions
中找到。
最终实际应用的内容取决于从设置到设置,覆盖规则和默认设置至少是复杂的。某些客户端驱动程序自动设置选项开/关。不同的选项和不同的默认值,取决于客户端到客户端(ODBC,OleDB,SNAC,SqlClient等)。 generic rule是: