自动构建Access 2007数据库

时间:2011-12-12 23:01:21

标签: continuous-integration ms-access-2007 starteam ms-access

作为构建过程的一部分,我们必须创建Access ACCDB(2007)数据库。数据库构成了我们应用程序的当前前端,并且必须(在其他原因)在构建过程的初始阶段构建。

目前,这是一个手动过程,我希望自动化。我们的数据库由许多表,公式,查询等组成。我相信我们实际上接近Access实际能够处理的极限,所以我们尽量不向它添加任何东西。

我看过这个项目: http://buildmsaccessdb.codeplex.com/

它看起来效果很好。但是,在我们的项目中,我们还有一个ACD文件,它是一个二进制文件,包含许多与系统相关的表。在Access开发方面,我绝不是一个向导。我刚刚接手了处理构建过程的任务。

每当我使用上面的项目来包含ACD文件时,我都会得到一个COM互操作异常。我现在面前没有错误信息,但是如果它能够促进这一目的,我可以发布它。

我们使用StarTeam作为源代码控制,并且在尝试从源代码管理系统创建数据库时,目前遇到了重大问题。我有时花几个小时只是重试从源代码控制创建数据库,因为每次Access尝试导入ACD文件时都会出现未知的故障。

我们尝试停用Access和ACD文件中的任何宏,这些宏可能是在数据库阶段创建期间自动激活的。我们怀疑这可能会中断数据库创建过程,但是问题仍然存在:我们只能通过多次尝试和一部分纯粹的运气从源代码控制创建我们的访问数据库!我希望通过自动化整个事情来解决问题。

有些人可能会指出,最好的起点是找到从Starteam中提取ACD(和其他)源文件的问题。我(最初)认为,如果归结为纯粹的运气,我宁愿让它自动化,然后让计算机浪费时间尝试构建Access数据库,然后让我监控过程。

如何解决在源控制系统内自动构建Access数据库的问题(即持续集成)的任何帮助或提示都是最受欢迎的。

当然,我也想了解如何解决无法从源代码控制中创建数据库的问题,而不会有一定的愚蠢运气。

1 个答案:

答案 0 :(得分:0)

我们最终设法解决了问题:

如果我们使用二进制ACD文件作为创建数据库的起点,则在导入数据库后,其内容也将可用。以它为起点我的意思是

  1. 将ACD文件复制到适当的目的地
  2. 将acd文件重命名为MyCompanyName.accdb
  3. 提供MyCompanyName.accdb作为MS Access数据库以将文件导入MSBuildAccess项目
  4. 因此ACD文件不应与其他文件一起导入,而应将其作为起点。通过查看codeplex项目中的实际msbuild任务,这变得很明显。

    除了上述步骤之外,我们还在Ms Access中遇到了与UIRibbon类相关的构建错误。这是通过创建MSBuildAccess项目文档中提到的参考文件来解决的(参见http://buildmsaccessdb.codeplex.com/documentation)。

    现在,我们只需要在编译访问数据库时解决内存不足问题。随着我们减小Access项目的大小,这很可能会消失。我们的“体验”是我们的Access解决方案处于Access在模块,报告,表单等数量方面能够处理的极限。 有关该问题的更多信息,请参阅这些参考资料:

    • http://help.lockergnome.com/office2/Create-accde-file-error--ftopict802934.html
    • http://stackoverflow.com/questions/1300632/compiling-an-access-2007-accdb-into-accde
    • http://bytes.com/topic/access/answers/518438-cant-create-mde