2016-11-11 44 views
0

我在一家公司工作,我们在MS Access中有数百个表和查询,在我们的SQL Server中有多个表。有时我们需要结合两个数据库的结果。使用Access和Sql数据库构建查询

当我们试图通过使用ODBC connection将我们的SQL表连接到MS Access时,结果返回非常缓慢,导致我们的客户抱怨。因此,除了非ODBC连接属性,我正在寻找;

  • 能够使用Sql DBAccess DB直观地通过拖放表来建立查询。
  • 如果能够保存这些查询和使用C#
  • 能够使用子查询(在另一个查询查询)重新运行它们

我的问题是,如果有任何类型的应用程序或API的(有偿或无偿)支持所有这些条款?或者有可能建立这样的事情?

+3

SQL Server Management Studio执行所有这些操作。但是,通过尝试使用访问表加入SQL服务器表来运行查询不是一个好主意,而且总是会很慢。您需要将访问表数据上载到SQL Server中的临时表,并从那里加入 –

+0

@KieranQuinn SQL Server Management Studio是否可以将MS Access数据库中的所有表都放入其自己的查询生成器中?顺便说一句,它不能“总是”缓慢。我们通过结合来自两个运行速度非常快的DB的C#应用​​程序中的数据构建了一个特定的查询。我们所需要做的就是轻松构建和保存查询。 – 0014

+0

它可以,但您需要先将Access从Access导入到SSMS数据库。您可以使用vba将记录集导入临时表,然后进行连接。如果你在C#应用程序中绘制这两个数据集并加入,那么肯定会比加入Access相对更有效,但肯定不是同一件事。加入另一个大型链接表的大型Access表将**总是**缓慢。 –

回答

1

SQL Server Management Studio执行所有这些操作。但是,通过尝试使用访问表加入SQL服务器表来运行查询不是一个好主意,而且总是会很慢。您需要将访问表数据上载到SQL Server中的临时表并从那里加入。

您可以使用vba将记录集导入临时表,然后进行连接。如果你在C#应用程序中绘制这两个数据集并加入,那么肯定会比加入Access相对更有效,但肯定不是同一件事。加入另一个大型链接表的大型Access表总是会很慢。

+0

SQL Server Management Studio执行所有这些都是真的,但我没有得到这个部分为什么我应该将数据上传到SQL中的临时表。我的表随着新记录不断增长,我建议每次需要使用此查询时,我都应该重新创建一个包含数百万条记录的临时表,并在创建的表中查询。我不明白这比简单地查询链接表更快。 – 0014

+0

您仍然可以使用访问权限,但可以使用VBA将您的访问表上载到要针对其查询的SQL服务器上的临时表(创建表#tableName .....)。然后,您可以针对SQL Server运行SQL查询并使用SQL Server表加入临时表。当您打开访问权限时,临时表将只存在于SQL服务器数据库中。一旦你关闭它就会消失。那有意义吗? –