Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 跨多址数据库的内部连接';s_Asp.net_Ms Access_Inner Join - Fatal编程技术网

Asp.net 跨多址数据库的内部连接';s

Asp.net 跨多址数据库的内部连接';s,asp.net,ms-access,inner-join,Asp.net,Ms Access,Inner Join,我正在为ASP.NET CMS重新设计一个我真的不喜欢的应用程序。我对som的性能进行了改进,结果发现,该CMS不仅使用MS SQL,而且一些用户“只是”使用MS Access数据库 问题是我有一些内部连接的表,在MS Access版本中,这些表位于两个不同的文件中。我不允许简单地将表移动到另一个mdb文件 我现在正试图找出一种跨多址数据库文件“内部连接”的好方法 如果我已经获取了所有的数据,并以编程的方式完成,那真是太遗憾了 谢谢< p>如果你有访问MDB,并且能够改变它们,你可以考虑使用链接

我正在为ASP.NET CMS重新设计一个我真的不喜欢的应用程序。我对som的性能进行了改进,结果发现,该CMS不仅使用MS SQL,而且一些用户“只是”使用MS Access数据库

问题是我有一些内部连接的表,在MS Access版本中,这些表位于两个不同的文件中。我不允许简单地将表移动到另一个mdb文件

我现在正试图找出一种跨多址数据库文件“内部连接”的好方法

如果我已经获取了所有的数据,并以编程的方式完成,那真是太遗憾了


谢谢

< p>如果你有访问MDB,并且能够改变它们,你可以考虑使用链接表。Access提供了链接到外部数据(在其他MDB、Excel文件中,甚至在SQL Server或Oracle中)的能力,然后您可以对链接执行连接


我强烈鼓励对这样一个选项进行性能测试。如果将Access数据库的用户迁移到另一个系统(甚至SQL Express)是可行的,那也更可取——上次我检查时,ODBC已经没有64位JET驱动程序了,所以如果应用程序曾经托管在64位环境中,这些用户将被隔离

在一个access DB中,您可以创建指向另一个DB的“链接表”。您应该(我认为)能够查询表,就好像它们都存在于同一个数据库中一样


这确实意味着您必须更改其中一个DBs来创建虚拟表,但至少您没有实际移动数据,只是在Access中创建指向它的指针,您可以通过“链接表管理器”添加远程表。可以将链接添加到一个或另一个Access文件,也可以创建引用两个文件中的表的新Access文件。完成此操作后,内部联接查询与在单个数据库中进行查询没有什么不同

您根本不需要链接表。有两种方法可以使用来自不同MDB的数据,这些数据可以在没有链接表的情况下使用。第一个是在SQL的FROM子句中使用“IN'c:\MyDBs\Access.mdb'”。保存的查询之一如下所示:

SELECT MyTable.*
FROM MyTable IN 'c:\MyDBs\Access.mdb'
另一个保存的查询是:

SELECT OtherTable.*
FROM OtherTable IN 'c:\MyDBs\Other.mdb'
然后可以保存这些查询,然后使用保存的查询连接两个表

或者,您可以通过在FROM子句中为每个表指定源MDB的路径,在单个SQL语句中管理所有MDB,因此:

SELECT MyTable.ID, OtherTable.OtherField
FROM [c:\MyDBs\Access.mdb].MyTable 
  INNER JOIN [c:\MyDBs\Other.mdb].OtherTable ON MyTable.ID = OtherTable.ID
但要记住一件事:


Jet查询优化器不一定能够将这些表中的索引用于联接(是否将它们用于单个字段的条件是另一个问题),因此这可能非常慢(在我的测试中,不是这样,但我没有使用大数据集进行测试)。但这个性能问题也适用于链接表。

您确定可以使用来自不同数据库的表实现关系吗?我不确定内部联接指令在这种情况下是否会成功(事实上,我确信您会遇到错误!)是的,Access允许链接表之间的任意关系一直追溯到Windows 3.1版本。然而,它通常会动态地获取整个表,这对于大型表来说可能是个问题。您多久会说您今天学到了有关Access的新知识?我已经好几年没有使用Access了,但我很痛苦地意识到,这一点简单的知识可以为我节省多少时间。Jet数据库引擎的声誉如此受损,这真是一个了不起的引擎。它能够(同时)连接如此多不同类型的数据,并做出优化数据检索的智能决策,这在任何其他平台上都是无与伦比的。