0

SQL プロファイラーを実行し、ADO.Net を使用してクエリを発行すると、SQL プロファイラーに次のステートメントが表示されます。

set quoted_identifier on
set arithabort off
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language us_english
set dateformat mdy
set datefirst 7
set transaction isolation level read committed

私はどのクエリにもこれらのステートメントを書いたことはありません。これらの Set ステートメントを停止するにはどうすればよいですか? SQL サーバーは、これらの SET ステートメントを設定するためだけに別の要求を行いますか?

2 つの質問:

  1. これらの SET ステートメントをすべてオフにした方がよいでしょうか? はいの場合、どうすればそれを行うことができますか?

  2. これらのSETの最適な設定はどれですか? ほとんどのシナリオでパフォーマンスが向上するため、arithabort をオンにする必要があることはわかっています。

4

1 に答える 1

1

これらはクライアント ドライバーによって設定されるため、作成する新しい接続では常に設定されます。

  1. これらをすべてオフにするのはよくありません。これらは接続が開かれたときに設定されますが、上記のように、接続で set SQL ステートメントを実行することによってそれらをオーバーライドできないという意味ではありません。

  2. この設定オプションは、計算列とインデックス付きビューのインデックスに使用されるオプションの 1 つであるため、ARITHABORT をオンに設定します。アメリカ人でない場合は、日付形式/言語を変更できますが、これは全体の取引には関係なく、ログインレベルで行うことができます. READ_COMMITTED 分離を使用したくない場合は、これを変更できますが、ほとんどの場合はこれで問題ないため、デフォルトになっています。残りは問題なく見えます。

于 2013-02-21T08:12:33.843 に答える