1

最近、Office 2007 にアップグレードしました。SQL Server 2000 データベースにリンクされているいくつかの Access データベース (いくつかの理由で Access 2000 形式のままです) があります。これらのデータベースには、頻繁に使用する多数のクエリがあります。毎日新しいクエリを作成し、データを並べ替え、要約し、一般的に分析しています。

アップグレード以来、一部のクエリは完了までに非常に長い時間がかかり (数秒ではなく数分)、実行しようとした新しいクエリがまったく完了せず、Access でタスクを終了する必要があります。これはかなり単純なクエリで、3 つのテーブルを結合し、フィールドの 1 つで並べ替えます。私はこれをいつもやっていますが、今はできないようです。

同様の問題に関する議論を検索しましたが、特定の推奨事項は見当たりませんでした。

何か案は?

4

4 に答える 4

1

ODBC リンク テーブルをすべて削除し、最初から再作成することをお勧めします。

于 2009-06-18T21:04:55.803 に答える
0

クエリでデータを変更する必要がない場合は、クエリをSQLパススルークエリに変換すると、データが大幅に高速化されます。これらのクエリはJetDBEngineを介して解析されるのではなく、サーバーに直接送信され、リンクされたテーブルをバイパスすることに注意してください。

ただし、MS SQL構文を使用し、QBEグリッドを失う必要があり、結果は読み取り専用になります。

データを更新する必要がある場合は、ストアドプロシージャが最適です。

于 2009-06-20T22:08:29.310 に答える
0

SQL Server バックエンドに変換したとき、SQL Server Migration Assistant を使用しました。強くお勧めします。それはそれがすることで非常に良いです。

そうは言っても、FEでリンクされたテーブルを使用していると思います。Access から SQL をコピーし、それを SQL Server Management Studio の「新しいクエリ」ウィンドウに貼り付けて、動きの遅いクエリを変換します。次に、すべての構文の変更を 1 つずつ処理して、クエリを T-SQL に変換し、Access のクエリと同じ名前のビューとして保存します。

Access クエリの名前を "Local_" に変更し、SQL Server のビューへのリンク テーブル エントリを作成する小さなルーチンがあります。以前は数分間実行されていたクエリが、この方法で数秒間実行されることがわかります。もちろん、これを手動で行うこともできます。

ところで、SQL Server Migration Assistant は多くのクエリを変換します (アクション クエリは変換しようとせず、クエリを選択するだけです...)。

于 2012-08-20T06:15:44.927 に答える
0

私は SQL Server 2000 で Access Data Projects を使用します。SQL バックエンドがそれほど古い場合はうまく機能します。

于 2012-10-19T12:58:44.527 に答える