2016-11-11 11 views
0

私は、MS Accessで何百ものテーブルとクエリを持ち、SQL Serverのいくつかのテーブルを持っている会社で働いています。場合によっては、両方のデータベースの結果を組み合わせる必要があります。AccessとSQLデータベースを使用したクエリの作成

ODBC connectionを使用してSQLテーブルをMS Accessにリンクすると、結果が非​​常に遅く返され、クライアントからの苦情が返されます。だからここでは、非ODBC接続プロパティ以外の私が探しているものです。テーブルをドラッグ&ドロップしてSql DBと視覚的にAccess DBを使用してクエリを構築することができること

  • これらのクエリを保存し、サブクエリ(別のクエリでクエリ)を使用することができること
  • C#を使用してそれらを再実行することができること

アプリケーションやAPIのいずれかの種類がある場合、私の質問はこれらすべての条件をサポートする(有料または無償)そういうものを作ることは可能でしょうか?

+3

SQL Server Management Studioはこれをすべて実行します。しかし、アクセステーブルを使用してSQL Serverテーブルに参加しようとすることでクエリを実行することは良い考えではなく、常に遅くなります。アクセステーブルのデータをSQL Serverの一時テーブルにアップロードしてそこから参加する必要があります –

+0

@KieranQuinn SQL Server Management Studioは、すべてのテーブルを独自のクエリビルダーのMS Accessデータベースから取得できますか?ところで、いつも遅くすることはできません。非常に高速に実行される両方のDBからのC#アプリケーション内のデータを組み合わせて、特定のクエリを構築しました。クエリを簡単に作成して保存するだけです。 – 0014

+0

最初にAccessからSSMSデータベースにテーブルをインポートする必要があります。 vbaを使用して、レコードセットを一時テーブルにインポートしてからジョインすることができます。 C#アプリケーションで両方のデータセットを作成してそこに参加すると、Accessに参加するよりも比較的効率的ですが、確かに同じものではありません。大規模なAccessテーブルを別の大きなリンクテーブルに結合すると、常に**遅くなります。 –

答えて

1

SQL Server Management Studioはこれをすべて行います。しかし、アクセステーブルを使用してSQL Serverテーブルに参加しようとすることでクエリを実行することは良い考えではなく、常に遅くなります。アクセステーブルのデータをSQL Serverの一時テーブルにアップロードし、そこから参加する必要があります。

vbaを使用して、レコードセットを一時テーブルにインポートしてからジョインすることができます。 C#アプリケーションで両方のデータセットを作成してそこに参加すると、Accessに参加するよりも比較的効率的ですが、確かに同じものではありません。大規模なAccessテーブルを別の大きなリンクテーブルに結合することは、常に遅くなります。

+0

SQL Server Management Studioはこれをすべて実行しますが、SQLの一時テーブルにデータをアップロードする必要はありません。私のテーブルは新しいレコードで成長し続けていますが、このクエリを使用する必要があるたびに何百万ものレコードのテンポラリテーブルを作成し、作成したテーブルをクエリしてください。私はリンクされたテーブルを単に照会するよりも、これがどう速いのか分かりません。 – 0014

+0

引き続きアクセスを使用できますが、VBAを使用してアクセステーブルを照会したいSQLサーバー上の一時テーブル(create table #tableName .....)にアップロードテーブルをアップロードします。その後、SQL Serverに対してSQLクエリを実行し、SQL Serverテーブルを使用して一時テーブルを結合することができます。一時テーブルは、アクセス権が開いている間だけSQLサーバーデータベースに存在します。それを閉じると、テーブルは消えます。それは理にかなっていますか? –

関連する問題