SQL Server 2005 查询多个Access 数据库?
Posted
技术标签:
【中文标题】SQL Server 2005 查询多个Access 数据库?【英文标题】:SQL Server 2005 query multiple Access databases? 【发布时间】:2010-01-28 20:40:45 【问题描述】:有没有办法让 SQL Server 2005 在一条 SQL 语句中查询 3 个或更多单独的 Access 数据库(每个数据库返回 1 条记录)?
【问题讨论】:
【参考方案1】:可以,但需要您为每个 Access 数据库创建一个链接服务器实例。见here for details about creating Linked Server instances on SQL Server 2005 to MS Access。
一旦你有了这些,你就可以查询 SQL Server,它会在你的 SQL Server 查询中指定表时,根据使用链接服务器实例表示法将查询传递给相应的 Access 数据库。
【讨论】:
【参考方案2】:您想要的是每个 Access 数据库的 Linked Server。
【讨论】:
【参考方案3】:请注意,在 SQL 2005 64 位中,您不会很快通过链接服务器查询当前版本的 Access 或 Excel。
【讨论】:
为什么会这样? 64 位 SQL Server 能否不使用 32 位组件,例如 Jet/ACE?请注意,Access 2010 将有一个 64 位版本,因此,有一个 64 位版本的 ACE 处于测试阶段。它也可以单独下载(当然,它仍处于测试阶段)。 @David-W-Fenton:正确,虽然我想说 32 位组件不能提供 64 位功能。 “Microsoft Jet”在 64 位服务器上只是不可用的选项。很高兴听到有关 Access 2010 的 64 位版本的消息,但在我看到它工作之前我会保持怀疑。 其他人用过 64 位 ACE 的测试版,似乎效果不错。是的,它是一个测试版,但您应该试一试,因为它可能会解决您遇到的问题。 @David-W-Fenton:我们的组织仍在使用 Access 2003。64 位 ACE 驱动程序可以使用吗?如果没有,不去。 :) 我不确定我是否理解。您查询的数据表采用 A2003 格式这一事实并不妨碍使用 ACE 来处理这些数据库,因为 A2003 是 ACE 的本机格式。 Jet/ACE 一直是向后兼容的,即后来的 Jet 引擎可以读/写早期版本的数据文件。所以 ACE 处理 Jet 4.0 数据文件应该没有问题。【参考方案4】:是的,使用sp_addlinkedserver
将它们设置为链接服务器。
【讨论】:
以上是关于SQL Server 2005 查询多个Access 数据库?的主要内容,如果未能解决你的问题,请参考以下文章
sql server 2005实现树形菜单显示的数据库表怎么设计?
通过 C# 查询时 SQL Server 2005 区分大小写