問題タブ [arithabort]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - Web から実行するとクエリがタイムアウトするが、SSMS から実行すると超高速
私が管理している Web アプリケーションで SQL タイムアウトの原因をデバッグしようとしています。私は C# コード ビハインドのソース コードを持っているので、どのコードが実行されているかを正確に把握しています。タイムアウトした SQL コードを実行する行までアプリケーションをデバッグし、SQL プロファイラーで実行されているクエリを監視しました。
このクエリを Web から実行すると、30 秒後にタイムアウトになります。ただし、プロファイラーに表示されているとおりにクエリをカット アンド ペーストし、SSMS に入れて実行すると、ほぼ瞬時に返されます。Web が使用している接続で ARITHABORT が OFF に設定されているという問題を追跡しました (つまり、SSMS セッションで ARITHABORT を OFF にすると長時間実行され、ON に戻すと実行されます)。非常に迅速に)。ただし、ARITHABORT の説明を読むと、当てはまらないようです...単純な SELECT のみを実行しており、演算はまったく実行されていません..WHERE 条件を使用した 1 つの INNER JOIN のみ:
ARITHABORT OFF がこのコンテキストでこの動作を引き起こすのはなぜですか?? SSMS からその接続の ARITHABORT 設定を変更する方法はありますか? SQL Server 2008 を使用しています。
linq-to-sql - Linq To SQL での接続に対して ARITHABORT を ON に設定する方法
デフォルトでは、Linq To SQL が使用していると思われる OLEDB 接続の場合、SQL 接続オプション ARITHABORT は OFF です。ただし、ONにする必要があります。その理由は、DB にいくつかのインデックス付きビューが含まれており、接続で ARITHABORT がオンになっていない場合、インデックス付きビューの一部であるテーブルに対する挿入/更新/削除操作が失敗するためです。WITH(NOEXPAND) ヒントが使用されている場合は、インデックス付きビュー自体に対する選択でさえ失敗します (インデックス付きビューのパフォーマンス上の利点を得るには、SQL Standard Edition で使用する必要があります)。
このオプションをオンにすることを指定できるデータ コンテキストの場所はありますか? またはコードのどこかで私はそれを行うことができますか??
不器用な回避策を管理しましたが、好きではありません....選択/挿入/更新/削除操作ごとにストアドプロシージャを作成する必要があり、このプロシージャで最初にSET ARITHABORT ONを実行し、次に別のプロシージャを実行します実際の選択/挿入/更新/削除が含まれています。つまり、最初のプロシージャは 2 番目のプロシージャの単なるラッパーです。選択/挿入/更新/削除コードの上に SET ARITHABORT ON を置くだけでは機能しません。
sql-server-2008 - EF4でArithAbortを制御する
EF4MVCソリューションでパフォーマンスの問題が発生しています。データベースへのすべての接続の前にArithAbortがオフに設定されるまで追跡することができました。現在、強制的に「オン」のままにしようとしています。
私たちは見てきました: LinqからSQLに発行される「SET」ステートメントをどのように制御しますか
しかし、EF4は各クエリの前に接続をリセットしているように見えるため、機能しません。
これまでのところ、特定のクエリの前に「ArithAbortをオンに設定」してみましたが、運がありませんでした。私たちはまた、長い道のりを歩み、それを設定した場所で新しい接続を確立しようとしましたが、それでも運がありません。
それで、データベースに対してlinqクエリを実行する前に、どのように設定することができるかについて、誰かが手がかりを持っていますか?
データベース設定の変更はオプションではありません。
編集:Andiihsの提案に従って、ラッパーソリューションを試し、次のコード行でEFCachingCommandクラスに追加しました
これにより、基本的に、Linq-sql呼び出しの前に正しいsetステートメントが付加されます。
私も追加する必要がありました:
EFCachingCommandDefinitionのGetAffectedEntitySets関数に、ストアドプロシージャ呼び出しで正しく機能させるため。
sql - ARITHABORTをオンに設定すると、aspでのみ失敗します
このエラーメッセージがあります:
aspコードからストアドプロシージャを呼び出したときにエラーが発生する理由を知りたいだけです。ManagementStudioにいるときにエラーが発生しませんか?
ストアドプロシージャでいくつかのxmlデータを使用しているためですが、ManagementStudioとコードの違いは何ですか
ありがとう
sql-server - SQL Server ARITHABORT 設定
ARITHABORTをオンに設定するのに最適な場所はどこですか? データベースまたはアプリで?MSDNでは、ログオン セッションで有効にするように指示されています。すべてのログオン セッションをオンにする必要がある場合、すべてのログオン セッションでオンにするのではなく、DB でオンにできないのはなぜですか。
sql-server - ARITHABORT OFF がパフォーマンスに悪影響を与える
アプリケーションからの SQL クエリは、通常SET ARITHBAORT OFF
、SSMS (デフォルト) が使用する where を使用することを十分に認識していますSET ARITHBAORT ON
。SET ARITHBAORT OFF
また、これは従来の互換性のためにのみ存在すると考えており、実際にはクエリは で実行する必要がありますSET ARITHBAORT ON
。
C# コンソール アプリ バッチ ファイルの一部として実行されるクエリがあります。コンテキストは (デフォルトで) と で準備されSET ARITHBAORT OFF
ます SET ANSI_WARNINGS ON
。最初の 92 回の呼び出しは正常に実行され、93 回目は常にロックされます (各呼び出しは異なるパラメーターを使用します)。SET ARITHBAORT OFF
93回目の呼び出しからのパラメーターを使用してストアドプロシージャを呼び出す前に使用すると、SSMSでこれを再現できました。
それでは、私の質問に進みます (これまでの背景情報で申し訳ありません) 。Erland Sommarskog の記事には次のように記載されています。
次に、ARITHABORT に関して言えば、SQL 2005 以降のバージョンでは、ANSI_WARNINGS が ON である限り、この設定による影響はまったくないことを知っておく必要があります。したがって、問題のためにそれをオンにする理由はありません。
ただし、SQL Server 2014 を使用していますが、次のことがわかりました。
正常に動作しますが、
無期限に実行されます。したがってSET ANSI_WARNINGS ON
、ARITHBAORT
オプションを無関係にする場合、クエリがロックされるのはなぜですか? ありがとう。
sql - アリサボートの設定が正しくないため、失敗しました
一意のインデックスを作成しました (IsDelete != 1 の場合、ケースの説明は一意である必要があります)
次に、次の手順を実行すると、「次の SET オプションの設定が正しくないため、UPDATE が失敗しました: 'ARITHABORT'. フィルター選択されたインデックスで使用するための SET オプションが正しいことを確認してください。
UPDATE ステートメントの前に SET ARITHABORT ON を追加しようとしましたが、何もしませんでした。
どんな助けでも大歓迎です!
sql-server - ビューで ARITHABORT を使用するには?
SSMS (MS Sql Server) で非常に高速に動作しているビューがありますが、Web アプリでは非常に低速です。データベースの ARITHABORT 設定が ON に設定されていますが、これが Web アプリまで続くかどうかはわかりません。
これをビュー自体に設定する方法はありますか? SSMS と Web アプリの間の速度の不一致には他にも問題がある可能性があることは知っていますが、これを試してみたいだけです (同じ問題を抱えている他の多くの人がこれで解決すると言っています)。
ところで、私はデータベース管理者ではないので、実際にはアクセス権がありません。私が持っているのは、このビューと、私が取り組んでいる Web アプリのビットのコードだけです。