2

MicrosoftAccessはMSSQLServerバックエンドデータベースのデータにアクセスするための巧妙な方法ですが、特にAccessで結果とデザインモードを切り替えようとすると、(いわば)大きなデータテーブルにアクセスする際に常に問題が発生します。

Accessは私に多くの気の利いたものを与えてくれますが、その中でも特にCrosstabsがありますが、サーバーへのこのハングした接続は私を少し夢中にさせます!

MS Accessの達人は、ODBC接続を最適化する方法を知っているので、クエリを微調整して構築したいだけで、全表スキャンのように見えることを実行しませんか?

4

4 に答える 4

4

ODBC ドライバーは可能な限り多くの作業を SQL Server に渡しますが、Nz のような vba 関数や PIVOT のような SQL Server 以外の構文を使用するとすぐに、ODBC ドライバーはより多くのデータとインデックスをプルバックして作業を完了する必要があります。クライアント側。

他の回答に従って、SQL Server でビューを作成してビューにリンクするか、Access Data Project を使用します。

注意: 不明な数の列を含む PIVOT クエリは、Access がネイティブで行うのと同じ方法で SQL Server で処理することはできません。そのため、Access で SQL Server データに対してピボットを実行すると、テーブル全体が引き戻される可能性があります。ピボット クエリは、動的 SQL 手法を使用して SQL Server で構築するか、すべての列がハード コードされた事前保存済みのビューを構築する必要があります。これを行う 1 つの方法については、次のリンクを参照してください。

http://www.sqlservercentral.com/articles/Advanced+Querying/pivottableformicrosoftsqlserver/2434/

于 2008-10-15T06:57:43.927 に答える
1

私の同様の問題は、リンク テーブル/ODBC 接続を選択した後に ORACLE ODBC 接続がハングすることでした。タスクマネージャーは、10分後に応答しないと言った. 次に、接続は使用可能なすべてのテーブルに対して ORACLE に ping を送信します。ORACLE ODBC アドミニストレーターでログを記録するように設定していたので、これらすべてをログに書き込む必要があり、結果がおそらく数時間遅くなりました。ログは 1 時間後に 60 MB になりました。オフにすると、すべて問題ありませんでした。

オフにするには、Oracle インストール/ネットワーク管理/MS ODBC 管理者/トレース タブに移動し、オフにします。

ODBC に関する適切なリソースは次のとおりです: http://eis.bris.ac.uk/~ccmjs/odbc_section.html

于 2010-08-18T12:23:21.263 に答える
1

他の人が言ったように、大きなテーブルでパフォーマンスを向上させる唯一の方法は、SQL Server データベース エンジンに作業を任せることです。言及されていないこれを行う方法は、パススルー クエリを使用することです。これにより、SQL Server でオブジェクトを作成することなく、すべてのコードを MS Access に保持できます。

http://support.microsoft.com/kb/303968

Access ダイアレクトではなく、SQL Server T-SQL を記述する必要があります。ただし、SQL 2005 (互換モード 90 で実行している場合) は PIVOT コマンドをサポートしています。

于 2008-10-15T07:27:08.017 に答える
0

残念ながら、Access はその作業の多くをサーバーにプッシュすることはできません。もちろん、SQL Server で複数のテーブルまたはビューに対するクエリを設計するときに、膨大なテーブル スキャンを実行します。

SSMS を使用して SQL Server でクエリ (ビュー) を作成および調整し、そのビューを SQL Server に格納してパフォーマンスを大幅に向上させながら、引き続き Access をフロント エンドに使用できます。

于 2008-10-15T00:47:43.377 に答える