質問

Microsoft Accessは、MS SQL Serverバックエンドデータベースのデータにアクセスする洗練された方法ですが、特にAccessで結果とデザインモードを切り替えようとすると、(いわば)大量のデータテーブルにアクセスする際に常に問題が発生します。

Accessは、いくつかの気の利いたものを与えてくれます。少なくともクロスタブはそうですが、このサーバーへの接続がハングすると、ちょっとおかしくなります!

MS Accessの達人は、ODBC接続を最適化する方法を知っているので、クエリを微調整して構築したいだけの場合に、フルテーブルスキャンのように見えませんか?

役に立ちましたか?

解決

ODBCドライバーは可能な限り多くの作業をSQL Serverに渡しますが、Nzなどのvba関数またはPIVOTなどの非SQL Server構文を使用するとすぐに、ODBCドライバーは作業を取得するためにより多くのデータとインデックスをプルバックする必要がありますクライアント側で行われます。

他の回答によると、SQL Serverでビューを作成してビューにリンクするか、Accessデータプロジェクトを使用します。

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

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

他のヒント

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

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

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

同様の問題は、リンクテーブル/ ODBC接続を選択した後、ORACLE ODBC接続がハングすることでした。タスクマネージャーは、数十分後に応答しないと言いました。次に、接続は利用可能なすべてのテーブルに対してORACLEにpingを実行します。 ORACLE ODBC Administratorでログを有効にしていたので、これらすべてをログに書き込む必要があり、結果がおそらく数時間遅くなりました。ログは1時間後に60 MBでしたが、それをオフにしたとき、すべてが正常でした!

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

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top