【问题标题】:Migration issue from MS-Access 2003 to MS-Access 2010从 MS-Access 2003 到 MS-Access 2010 的迁移问题
【发布时间】:2010-08-13 14:13:14
【问题描述】:

我在一家公司工作,我们可能会从 Access97/2003 更新到 Access2010。

在玩弄了一个原型之后,我发现将 Access 2010 与在 Access 2003 中创建的数据库一起使用时出现问题。

在某些情况下,Access 2003 中的现有查询/SQL 将在 Access 2010 中变得不可用。这里有一个小例子:

表名:参数字段名:数字、值

使用 Access 2003 查询设计器创建的查询:

SELECT Parameters.Value FROM [Parameters] WHERE (((Parameters.Number)=100));

这适用于 Access 2003。 在 Access 2010 中引发错误:PARAMETER 子句中的语法错误

该错误的解决方法是更改​​ Access 2003 中的视图。这里我们去掉括号:

SELECT Parameters.Value FROM [Parameters] WHERE Parameters.Number=100;

这将在 Access 2010 中工作,但查询在设计器中保持不变,因为查询设计器创建了上面显示的语法。

这个错误的原因其实是使用了保留字'Number',在开始建表或查询的时候不应该使用,但是对于已有数百个数据库的迁移,它是非常有用的可能或至少有风险在未经完整测试的情况下更改 Access 版本。

我的想法是编写一个小程序来打开所有现有的视图和表格来检查它们是否工作正常。

无论如何,是否有人对此有更好的解决方案,或者是否有工具可以检查 MS-Access 2003 数据库是否与 Access 2010 兼容?

在此先感谢

约尔格

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    ParametersValueNumber 都是保留字。你可能是对的,Number 是这里的罪魁祸首;我会怀疑 Parameters 更有可能在查询中混淆 Access。

    “对于数百个现有数据库的迁移”,首先使用 Allen Browne 的Database Issue Checker Utility 评估它们。除了保留字问题之外,它还会让您了解其他潜在的问题领域。这些问题在 Access 2010 中是否会比 2003 年更麻烦,这是一个悬而未决的问题。

    但是,对于您的困境,我没有找到简单的解决方案。您拥有数百个数据库,其中可能包含数千个表和查询……如果它们经常包含表和字段名称以及其他对象名称的保留字……您的情况将很糟糕。

    在现有数据库的副本上进行实验。打开“轨道名称自动更正”并让它构建对象依赖项。更改表定义以消除保留字。然后看看你需要多少额外的工作来查找和修复自动更正没有为你做的项目。但不要在您发布给用户的任何应用程序中开启自动更正功能。

    【讨论】:

    • 非常感谢您的回答,Issue Checker Utility 和 Allen Browns 网站的链接对于对现有数据库进行快速分析绝对有很大帮助。该工具甚至可以与来自 SQL Server 或 Oracle 的链接表一起运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    相关资源
    最近更新 更多