![MS-Access 数据库升级错误](https://linux22.com/image/1273135/MS-Access%20%E6%95%B0%E6%8D%AE%E5%BA%93%E5%8D%87%E7%BA%A7%E9%94%99%E8%AF%AF.png)
我正在将 MS-Access 数据库从 Access 2010 升级到 MS-SQL 2008 (10.0.1600)。当我运行升级向导时,除了一个表之外,所有表都被移动了...
未移动的表有大约 18,000 条记录,许多列名中都有空格。我只是不确定如何找出表未移动的原因。我收到的错误仅告诉我“跳过了 Tab,或导出失败”。我不知道如何让 Access 为我提供比这更有用的错误。
到目前为止我已确认该错误不是由以下原因引起的:
- 无效的数据类型(是/否、日期等)
- 列名称中的空格
答案1
Access 附带的升迁向导总是落后于时代,因为它只能处理旧版本的 SQL Server。
升级的合适工具是 SQL Server Migration Assistant for Access。它更加灵活,功能更加智能。它还进行了更新以反映 SQL Server 的最新版本。
有了它,您可以预览升迁操作将执行的操作,并纠正存在的问题(如果有)。我发现它无法做到的一件事是正确解释某些类型的字段级验证规则。除此之外,它在标记问题和准确识别需要更改的内容方面相当不错。
答案2
我遇到了类似的问题。原来我有一个字段被设置为自动递增作为标识字段。表结构被带到了 SQL Server,但没有导入任何数据。我还没有机会走到那一步,但我的计划是将标识属性设置为“NO”,然后在成功拆分数据库后,将属性重新设置为“YES”。这可能只是众多可能性之一。
答案3
您的其他表的列名中是否有空格?如果没有,那么您可以尝试重命名列,方法是将空格更改为下划线(“_”)之类的内容,然后在 MS-SQL 服务器控制台上使用“ALTER TABLE”SQL 命令将列改回原样(如果支持)。
但是,不建议在列名中使用空格,因为它会导致各种复杂情况(特别是引用 SQL 命令的部分内容和防止注入攻击等)和问题,尤其是涉及更多开发人员的情况。我建议切换到下划线并相应地更新代码。
答案4
为了好玩(应该可以快速尝试进行故障排除/健全性检查),运行包含所有字段的制表查询,但输出字段中的名称非常短(即 fname:[User First Name] ),所有内容都符合要求,很短,只有一个词。然后您将得到一个重复的表,您可以在修改表并尝试扩大其大小时处理数据类型更新等
希望有人能说出你遇到的真正技术限制,但是当我遇到这些问题时,我发现最好是了解最基本的结构,然后按照自己的意愿去做 - 小步骤,一次改变一个 - 你有权质疑错误信息的准确性 - 我从 sql 和 access 中得到了如此误导性的消息 - 不仅仅是模糊的,而且明显是误导性的,错误的,要么是错误信息和问题太常见和具体,答案遍布谷歌搜索结果的前 5 页,要么是太糟糕了,我只是回到最基本的基础知识并迭代到我真正追求的复杂的东西