現象
Microsoft Access では、パススルークエリを他のクエリ内のソーステーブルとして使用すると、パフォーマンスが低下することがあります。
原因
Microsoft Access では、パススルークエリの定義は保存されません。 そのため、パススルークエリは、定義に関連する情報を取得するために、さまざまなタイミングで実行されることがあります。 パススルークエリの実行に時間がかかる場合、パススルークエリを実行しているため、Access がハングしているように見えます。
解決方法
Access で問題が発生した場所に応じて、この問題を回避するためのいくつかの方法があります。全般的な変更:
-
パススルークエリのパフォーマンスを向上させて、クエリの実行にかかる時間を短縮します。
-
パススルークエリを使用する代わりに、SQL Server でビューを作成し、そのビューをリンクテーブルとして Access にリンクさせます。
特定のシナリオ:クエリの設計:
-
[デザイン] ビューではなく Access SQL ビューでデザインを変更します (クエリデザインビューでは、クエリをデザインビューで最初に開くことで、ビューを [SQL ビュー] に変更できます)。 次に、リボンの [デザイン] タブの [結果] セクションに移動します。)
-
この問題は、保存されているクエリに影響します。 このため、Access SQL ビューで既存のクエリを開き、SQL 構文をコピーし、新しいクエリを作成し、sql ビューに SQL 構文を貼り付けて、クエリを [デザイン] ビューに変更します。 この問題を解決せずにクエリを保存することができます。
フォームを開く、またはクエリを実行する:
-
Recordset type プロパティを Snapshot に変更します。 (デザインビューでは、リボンの [デザイン] タブの [表示/非表示] グループにプロパティシートを公開します)。
レポートの表示:
-
パススルークエリをレコードソースとして使用するようにレポートを変更する