2017-06-23 11 views
0

私が維持しているVB6(ADO/ODBC to SQL Server)アプリケーションで突然パフォーマンス低下の問題が発生しました。これはSET ARITHABORT ONいくつかのSELECTクエリの前に。アプリケーション内のすべてのSELECTクエリでARITHABORTをONに設定する必要がありますか?

質問は次のとおりです。アプリケーションの選択クエリごとにARITHABORTをオンにする汎用プロシージャを作成することをお勧めしますか?それを行う上での危険は何ですか?この設定により、SELECTクエリはユーザー/開発者に気づかずに無効なデータ(特に集計関数を含む場合)を返す可能性がありますか?

更新:このアプリケーションは、マージレプリケーションが有効になっているSQL Server 2014サーバーで実行されます。

答えて

0

これは現在、ARITHABORT OFFを示しています。これは非常に悪い考えで、MicrosoftはBOLに関する特定の警告を追加しました。

"ログオンセッションでは常にARITHABORTをONに設定する必要があります.ARITHABORTをOFFに設定するとクエリの最適化がパフォーマンス上の問題に悪影響を与える可能性があります。

"警告SQL Server Management Studioの既定のARITHABORT設定はONです。クライアントアプリケーションのARITHABORTをOFFに設定すると、異なるクエリプランを受信すると、パフォーマンスの低いクエリのトラブルシューティングが困難になります。つまり、同じクエリを管理スタジオアプリケーションの速度が遅いManagement Studioでクエリをトラブルシューティングする場合、常にクライアントのARITHABORT設定と一致する必要があります。

はい、私はARITHABORTをONに設定しますが、最初から設定します。環境の残りの部分がARITHABORT OFFを期待してビルドされている場合、私はそのような基本的な動作設定を変更することを非常に躊躇します。

パフォーマンスの問題については、ARITHABORT設定で修正する必要はありません。私はデータを調べて、なぜの性能低下が最初に起きるのかを調べます。何かが変更されているに違いありません、あなたが何かを見つけたら、それをより根本的な方法で修正することができます。

+0

はい、アプリケーションのデフォルトはオフです。これは、最近までアプリケーションに深刻な影響を与えていないようです。あなたが提供したリンクは重要な情報を持っていますが、私の質問には答えません。そのような変更がアプリケーションで意図しない結果を引き起こす可能性はありますか(特に複製が関係しているため) – FaultyOverflow

+0

私は複製がこの問題の要因であるとは思わない。アプリケーションの構築方法によって異なります。どのような妥当性チェックがソフトウェア内にあるか、どのような応答が期待されるか。私はいくつかのアプリケーションエラーが予想されます。私は間違った結果を期待しませんが、可能です。 – HoneyBadger

関連する問題