2009-08-12 67 views
8

快速問題...設置選項....他們存儲在哪裏

SET OPTIONS存儲在SP,Func,Trigger等數據庫中的值在哪裏?如果它們與全局設置不同?

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視圖中。但是對於每個存儲過程或其他對象呢?

USE [SomeDB]
GO

SET ARITHABORT OFF
SET CONCAT_NULL_YIELDS_NULL OFF
SET QUOTED_IDENTIFIER OFF
GO

CREATE usp_SampleProc
AS
BEGIN
- 執行一些動作
END

我看到一對夫婦可以使用以下retrived:

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

其餘的都在哪裏......它們甚至存儲在每個存儲過程中......一切都在嗎?
感謝,
_Ub

回答

6

那些適用於程序,就像ANSI_NULLSQUOTED_IDENTIFIERsys.sql_modules,他們在那裏從OBJECTPROPERTY檢索。

那些適用於數據庫並根據數據庫設置的可在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_collat​​ion is_recompiled ......關於其他人呢。 _Ub – 2009-08-12 22:34:32

+0

SET ARITHABORT ON SET ANSI_WARNINGS ON 對於特定過程。 這兩個是我比較關心的嗎? – 2009-08-12 22:40:24

+1

在過程創建時僅捕獲QUOTED_IDENTIFER和ANSI_NULLS設置。所有其他設置,當前會話值將適用。 – 2009-08-12 22:51:37

相關問題