2011-02-10 10 views
4

に関する多くの質問がありましたが、 ANSI設定のオンまたはオフに応じて、いくつかの機能(計算された 列やインデックス付きビューのインデックスなど)が役に立たなくなることがあります。So 、どのようなこれらの推奨値:ANSI関連の設定に関して推奨される設定は何ですか?

  • ANSI_NULLS
  • ANSI_WARNINGS
  • Concat_NULL_YELDS_NULL
  • をANSI_PADDING
  • QUOTED_IDENTIFIER
  • ARITHABORT
  • NUMERIC_ROUNDABORT

私はそれらについてのガイドラインをしたいと思います。 SQL Server 2005では

+1

次の3つはすべて「オン」です。 'OFF'設定は推奨されていません。 'ANSI_Padding'、' ANSI_NULLS'、 'Concat_NULL_YELDS_NULL'です。インデックス付きビューの場合、 'ANSI_WARNINGS'は' ON'でなければなりません。 'ANSI_WARNINGS'がこれに優先するように、ARITHABORTはこれ以上重要ではありません(プランキャッシュに重複したプランを避けるために一貫してください)。 –

+1

マーティン、これは答えでなければならないので、それ!!!!!! –

+0

私はそのクイックコメントを投稿する時間がありました。今より完全な答えが与えられます。 –

答えて

4
インデックス付きビューについて

及び索引付けまたは計算カラムを持続以下SET OPTIONSare all prescribed

SET options    Required value 
--------------------- ------------- 
ANSI_NULLS     ON 
ANSI_PADDING     ON 
ANSI_WARNINGS*    ON 
ARITHABORT     ON 
CONCAT_NULL_YIELDS_NULL  ON 
NUMERIC_ROUNDABORT   OFF 
QUOTED_IDENTIFIER   ON 

ONからANSI_WARNINGS設定データベースの互換性レベルが80またはそれ以前に設定されていない暗黙場合(ONARITHABORTを設定します明示的に設定する必要があります)。

これにもかかわらず、ARITHABORTの設定で一貫していることは意味があります。これは、プランキャッシュキーとして使用され、不一致が重複したプランキャッシュスペースを浪費する可能性があるためです。あなたは以下のクエリからこれを見ることができます。

SET ARITHABORT OFF 
GO 

SELECT * FROM master..spt_values WHERE number= -10 /*plan_cache_test*/ 

GO 

SET ARITHABORT ON 
GO 

SELECT * FROM master..spt_values WHERE number= -10 /*plan_cache_test*/ 

GO 
    SELECT * 
    FROM sys.dm_exec_cached_plans 
      CROSS APPLY sys.dm_exec_plan_attributes(plan_handle) AS epa 
      CROSS APPLY sys.dm_exec_query_plan(plan_handle) 
      CROSS APPLY sys.dm_exec_sql_text(plan_handle) 
    WHERE attribute = 'set_options' AND text LIKE '%plan_cache_test%' 
            AND text NOT LIKE '%this_query%' 

でもインデックス付きビューなし/ OFF設定は、次のオプションANSI_PADDINGANSI_NULLSで廃止CONCAT_NULL_YIELDS_NULLとXQueryおよびXMLデータ変更文がQUOTED_IDENTIFIERONであることを要求されている列の要件を持続しました。

+1

M $は、それ自身のデフォルトが新しいデータベースのための彼らの推薦を反映することができます... –

関連する問題