Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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
Sql server MS Access应用程序-将数据存储从Access转换为SQL Server_Sql Server_Sql Server 2005_Ms Access_Vba_Ms Access 2007 - Fatal编程技术网

Sql server MS Access应用程序-将数据存储从Access转换为SQL Server

Sql server MS Access应用程序-将数据存储从Access转换为SQL Server,sql-server,sql-server-2005,ms-access,vba,ms-access-2007,Sql Server,Sql Server 2005,Ms Access,Vba,Ms Access 2007,请记住,我不是访问大师。我精通SQL Server和.Net framework。以下是我的情况: 一家承包商为我的公司构建了一个非常大的MS Access 2007应用程序 应用程序已按访问权限分为两层;前端部分保存所有Ms访问表单,后端部分保存存储在网络计算机上的访问表、查询等 当然,需要将数据存储部分转换为SQLServer2005,同时保留Ms Access中构建的所有GUI表单。这就是我进来的地方 我读了一些书,发现您可以将表单甚至access表链接到SQL Server表,但我仍然不

请记住,我不是访问大师。我精通SQL Server和.Net framework。以下是我的情况:

一家承包商为我的公司构建了一个非常大的MS Access 2007应用程序

应用程序已按访问权限分为两层;前端部分保存所有Ms访问表单,后端部分保存存储在网络计算机上的访问表、查询等

当然,需要将数据存储部分转换为SQLServer2005,同时保留Ms Access中构建的所有GUI表单。这就是我进来的地方

我读了一些书,发现您可以将表单甚至access表链接到SQL Server表,但我仍然不确定到底可以做什么以及如何做


有人这样做过吗?请就此类承诺的任何能力、限制和考虑事项发表意见。谢谢

这是您的最低成本选择。您需要为指向SQL Server的Access客户端设置ODBC连接。然后可以使用(我认为是)“导入”选项通过ODBC源将表“链接”到SQL Server。将您的数据从Access表迁移到SQL Server,SQL Server上的数据将以您可以管理和备份的形式存在。重要信息,然后可以将查询作为视图写入SQL Server,并作为链接表呈现给Access db。

链接访问表工作正常,但我仅将它们用于ODBC和其他数据库(Firebird、MySQL、Sqlite3)。主键或外键的信息未通过。数据类型解释也存在问题:MySQL中的日期与Access VBA中的日期不同。我想在使用SQL Server时,这些问题并没有那么严重。

您有两个选择,可以将结构和数据从access移动到SQL。然后可以设置链接表,使应用程序“应该”像现在一样工作。不幸的是,Access使用的Sql方言与Sql Server不同,因此如果代码中有任何“原始Sql”语句,则可能需要更改它们

虽然Access的所有其他功能都链接到了表,但QBE、表单等应该可以正常工作。这是最简单也是最好的方法

解决此问题的另一种方法是如上所述迁移数据,然后从access中使用ADO,而不是使用链接表。如果您习惯于其他语言/开发环境,那么这种方法有点普遍,但它是错误的方法。Access附带了大量的内置功能,使处理数据变得非常简单,如果您重新使用ADO/Sql,那么您将失去许多好处

我建议从应用程序的一小部分开始——非必要数据,迁移一些表,看看它是如何运行的。当然你得先把所有东西都备份起来


祝你好运

我听过一位开发人员谈到这项技术。这是如果您真的想要像客户机-服务器应用程序这样的东西

  • 创建分发给每个用户的.mdb/.mde前端文件(您将看到原因)
  • 对于每个需要执行CRUD的表,在#1中的文件中都有一个本地副本
  • 表单与本地表保持链接
  • 编写VBA代码以处理从本地表到SQL Server数据库的CRUD
  • 报告可以基于从SQL Server创建的临时表(我认为不能在mde文件中创建临时表)
  • 一旦您决定了如何使用单个表单执行此操作,将相同的技术应用于其余表单就不太困难了。在本地表上使用表单的好处是,您可以将许多现有功能保留为现有应用程序(我希望这就是为什么他们使用并继续使用Access)。您只需要解决将数据来回传输到SQL Server的问题

    您可以继续使用链接表,然后根据时间和性能需要,使用此技术逐步淘汰它们

    因为每个用户都有自己的本地文件,所以他们可以处理数据的本地副本。只有完成任务所需的最低要求才应在本地复制。示例:如果他们正在更新单个记录,则表中只会有该记录。当用户添加新记录时,您会注意到该记录的ID字段为空,因此需要一条insert语句


    我猜本地表就像.NET中的数据集?在某种程度上,我确信这是一个不完美的类比。

    重要的一点:如果在Access中链接表到SQL Server,那么每个表都必须定义一个主键(Contractor?Access?经验表明,可能有些表没有PKs)。如果未定义PK,则访问表单将无法更新和插入行,从而使表格有效地只读。

    请勿使用Access中的升迁向导:

    • 首先,它不适用于SQLServer2008

    • 第二,有一个更好的工作工具:
      SSMA,由Microsoft免费提供

    它将为您带来很多好处:

    • 将数据从Access移动到SQL Server
    • 自动将表链接回Access
    • 为您提供有关两个数据库中的差异导致的潜在问题的大量信息
    • 保持对更改的跟踪,以便您可以随着时间的推移保持两个更改的同步,直到迁移完成

    我最近写了一篇关于它的文章。

    其他人建议将Jet后端升级到SQL Server并通过ODBC链接。在一个理想的世界里,应用程序将运行得很好,而无需进行任何更改

    在现实世界中,您会发现,您的一些前端对象设计为高效、快速的喷气式飞机