17

MSAccess2003アプリをSQLServerバックエンドにアップサイジングしています。私の開発マシンでは、SQL Serverはローカルであるため、パフォーマンスは非常に良好です。アプリを再設計するときにネットワーク遅延の影響を考慮できるように、リモートSQLServerでパフォーマンスをテストしたいと思います。現在は高速に見えるクエリの一部は、本番環境にデプロイされると実行速度が非常に遅くなると予想しています。

仮想マシンを使用したり、SQLを別のコンピューターに再配置したりせずに、SQL Serverの速度を落とす(またはリモートの速度をシミュレートする)にはどうすればよいですか?私のためにこれを行うプロキシまたはWindowsユーティリティの種類はありますか?

4

4 に答える 4

5

私はそれを自分で使用したことはありませんが、ここに別のSOの質問があります:

コメントの1つで、SQLServerが明示的に言及されています。

于 2010-11-13T16:53:23.543 に答える
0

あなたは誤解の下で活動している可能性があります。MS-Accessは、いわゆる「異種結合」をサポートします(つまり、さまざまなバックエンドのテーブルを同じクエリに含めることができます。たとえば、OracleとSQLServerのデータとAccessとExcelスプレッドシートを組み合わせます)。この機能をサポートするために、Accessは、インテリジェントなバックエンドに対して「パススルー」クエリがある場合を除いて、クライアントでWHERE句フィルターを適用します。SQL Serverでは、フィルタリングはサーバーで実行されているエンジンで行われるため、SQL Serverは通常、はるかに小さいデータセットをクライアントに送信します。

あなたの質問に対する答えは、あなたが「リモート」とは何を意味するかにも依存します。AccessとSQLServerを同じネットワーク上で相互にピットインする場合、Access MDBファイルがファイルサーバー上にある場合、サーバー上で実行されているSQLServerはAccessが消費する帯域幅のごく一部しか消費しません。(もちろん、MDBがローカルPCにある場合、ネットワーク帯域幅は消費されません。)LAN上のアクセスとクラウド経由のブロードバンドを介したSQL Serverを比較する場合は、公称100メガビット/秒のパイプをDSLまたはケーブルの帯域幅、つまり高速ケーブルの公称20メガビット/秒に対して、せいぜい帯域幅の5分の1、おそらくはるかに少ない。

したがって、比較しようとしているものについてより具体的にする必要があります。

ファイルサーバー上にあるAccessMDBを消費するローカルPC上のAccessクライアントを、同じネットワーク上の別のサーバー上にあるSQL Serverからのデータを消費する他の種類のクライアントと比較していますか?引き続きAccessをクライアントとして使用しますか?クエリはパススルーになりますか?

于 2010-11-13T17:04:22.233 に答える
0

これを行うWindows用のソフトウェアアプリケーションがあります(必要に応じて、低帯域幅、遅延、および損失をシミュレートします)。それは無料ではありません。試用版には30秒のエミュレーション制限があります。その製品のホームページは次のとおりです。http://softperfect.com/products/connectionemulator/

于 2010-11-13T21:58:32.393 に答える
0

@RedFilter:使用しているAccessのバージョンを指定する必要があります。2006年のこのドキュメントは、クエリに「Access固有のキーワード」が含まれているかどうかよりも、Accessがネットワークを介してクライアントにもたらすもののストーリーが複雑であることを示しています。

http://msdn.microsoft.com/en-us/library/bb188204(SQL.90).aspx

ただし、Accessは、新しいバージョンごとにサーバーリソースの使用に関してますます洗練されている可能性があります。

私は簡単なアドバイスを支持します。GUIとしてAccessを使用しながら帯域幅の消費を最小限に抑えたい場合は、パススルークエリが最適です。これは、アクセスではなく、受信するデータの量を制御するのはあなただからです。ワイヤーダウン。

私はまだあなたの最初の質問/アプローチが間違っていると思います:もしあなたのAccess MDBファイルがそもそもLAN上にあったなら(それでしたか?)あなたはネットワーク待ち時間の影響をシミュレートする必要はありません。任意の一定の「ネットワーク遅延」要因を導入するのではなく、Accessが生成するSQLステートメントをスニッフィングする必要があります。LANサーバー上にあるMDBを使用するAccessGUIを、SQLServerバックエンドに対して実行されるアップサイズのAccessGUIと比較するには、Accessがバックエンドサーバーからクライアントにネットワークを介してどのデータをダウンさせるかを評価する必要があります。パススルークエリを使用しない限り、「アップサイズされた」アクセスでさえ、帯域幅の谷を占有する可能性があります。ただし、SQL-Serverバックエンド用に適切に作成されたクライアントは、LANサーバー上にあるMDBに対してAccessが実行するよりも、ネットワーク帯域幅に関して常にはるかに倹約的です。セテリスパリブス

于 2010-11-16T14:50:53.420 に答える