【问题标题】:Use Access Database with Microsoft SQL Server将 Access 数据库与 Microsoft SQL Server 一起使用
【发布时间】:2012-02-15 15:38:37
【问题描述】:

我们有一些 Web 服务(用 .NET WCF 编写)当前访问 Microsoft SQL Server 数据库以检索/更新数据。我们现在还需要从 Microsoft Access 数据库中检索/更新数据。 Access 数据库目前被许多旧系统使用,因此我们无法真正将其转换为 Microsoft SQL 服务器数据库 - 我们被 Access 数据库困住了。

我的问题是:有没有一种方法可以“通过”Microsoft SQL Server 与 Access 数据库进行通信(以便我们可以向它发出 T-SQL 命令,MS SQL Server 将处理所有底层映射以查询 Access数据库?)还是通过 ADO.NET 与 Access 数据库进行通信,通过在网络共享上公开 Access 数据库的位置更好?有人有什么建议我们可以试试吗?

谢谢大家。

【问题讨论】:

    标签: sql-server wcf ms-access architecture


    【解决方案1】:

    如果保留旧的 Access 应用程序,但将表和数据移出 Access 应用程序会怎样?

    Access 是一个很好的 SQL 服务器前端。当您使用 Access 构建应用程序时,就像大多数其他开发工具一样,您必须选择要与 Access 一起使用的数据引擎和数据库系统。 Access 内置了对 JET 数据引擎(现在称为 ACE)的原生支持。 Access 内置了对 SQL Server 的本机支持。 Access 2010 不仅支持使用 SharePoint,还支持 SQL Auzure。

    因此,您可以考虑将 Access 现在使用的数据移动到 SQL Server,并且几乎不需要对 Access 应用程序进行任何更改。因此,如果表位于文件(mdb 或 accdb 文件)或基于服务器(如 SQL 服务器)中,则 Access 应用程序功能会很高兴,实际上对于驻留在 SharePoint 上的表,Access 实际上是使用 Web 服务来更新 SharePoint 上的数据。但是,在所有情况下,标准代码、表单、VBA 代码甚至使用的 SQL 都不需要更改。

    所以我这里的解决方案不是尝试将 SQL 服务器附加到位于文件夹中的某个“文件”,而只是将 Access 附加到 SQL 服务器以更新表,因此无需“传输”数据系统之间将不再存在。

    【讨论】:

    • 您好 Albert,遗留系统在 Access 本身之外,但连接到 Access 数据库以通过 ADO.NET 检索数据。如果我们将表移出 Access,这不会破坏这些现有系统(因为它们将无法再次从 Access 检索数据,但需要更新以从 MS SQL Server db 读取它们)?
    • @DotNetDeveloper Access 有一个称为链接表的概念,它是远程表,就像普通的 Access 表一样,除了远程。 Access 执行 Access 和 SQL Server 之间的所有转换。
    • 感谢托达,这似乎是我们前进的方向。我将通过 Access 对链接服务器和链接表进行试验,看看结果如何。谢谢你们在这方面的帮助,我现在有一些阅读要做! :-)
    • 只是不要粉饰这个。数据移动的兼容性非常高。将表移动到 SQL Server 后,几乎不需要更改代码。您确实需要经验丰富的 Access 开发人员来“了解”升迁时出现的问题。大多数数据或所谓的“升迁”到 SQL 是自动化的,但有些代码会在没有一些调整的情况下中断。如果桌子等设置不当,这会影响到多么顺利。如果一个人能流利地使用 Access 代码,那么代码更改是“次要的”。您可以考虑上传或 SQL 拉取数据的其他途径,但这不再是“实时数据”设置。
    【解决方案2】:

    Use a linked server:

    链接服务器允许访问针对 OLE DB 数据源的分布式异构查询。使用 sp_addlinkedserver 创建链接服务器后,可以对该服务器运行分布式查询。

    如果您只在 32 位平台上运行:

    EXEC sp_addlinkedserver 
       @server = N'SEATTLE Mktg', 
       @provider = N'Microsoft.Jet.OLEDB.4.0', 
       @srvproduct = N'OLE DB Provider for Jet',
       @datasrc = N'C:\MSOffice\Access\Samples\Northwind.mdb';
    

    或者如果您还需要担心 64 位:

    EXEC sp_addlinkedserver 
       @server = N'SEATTLE Mktg', 
       @provider = N'Microsoft.ACE.OLEDB.12.0', 
       @srvproduct = N'OLE DB Provider for ACE',
       @datasrc = N'C:\MSOffice\Access\Samples\Northwind.accdb';
    

    【讨论】:

    • 感谢您的建议。我会读入链接的服务器,因为它对我来说是新的。
    • 将此视为第一步。然后您就有时间将 Access 应用程序的后端迁移到 SQL Server。
    猜你喜欢
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 2015-09-21
    • 2021-02-05
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 2016-05-22
    相关资源
    最近更新 更多