将 MS Access 数据库迁移到 SQL Server 2008 R2

Migrating MS Access Database to SQL Server 2008 R2

我有一个 SQL Server 2008 R2,我想从 MS Access 迁移数据,但是当我尝试使用 SSMA 时,选择 SQL Server 2008 R2 的选项不可用。

请提供任何帮助,SSIS 对我的情况有用吗?

好吧,这真的取决于您在访问数据库中有多少表和多少关系。

例如,您可以在工作站上安装免费版 sql server express,然后进行本地迁移(例如 sql 2017 格式)。

到那个时候,你就可以选择把数据库脚本出来了——以后版本的SSMS(sql management studio)当然支持2008了。比如这个:

因此,不要右键单击数据库并选择“脚本数据库为”,而是从任务菜单中选择“生成脚本”。

由此可见,2008 年仍然可以编写成脚本。

当然,即使在最新版本的 sql 服务器中,您也可以创建旧版本的数据库。但是,当您创建数据库的“先前”版本时(比如在 sql 服务器的最新版本中,这只会限制兼容性功能,但不允许您使用或制作要恢复的备份文件在以前版本的 sql 服务器中。(sql 服务器有点讨厌 - 你只能继续使用数据库 - 强大的功能,但一旦你移动,你就不能使用也不能创建备份文件可以被以前的版本使用。但是你可以用脚本输出到以前的版本。

部分原因在于您使用 SSMAA 花费了多少时间。

如果您确实按照上述方式进行操作,请务必调整列映射。因此,例如,默认情况下 access 中的 datetime 会转换为 datetime2,我不太记得 2008 是否支持 datetime2。 (无论如何,我还是会坚持 datetime)。

因此,即使使用最新的迁移助手,您也可以设置(调整)列映射,最多需要 1 或 2 个更改(例如在 datetime2 列类型中默认为 datetime)。

获取和设置 sql 本地快递是反复测试迁移的好方法,因为通常前几次迁移可能会失败,或者不会产生您想要的结果。这实际上是采用 SSMAA 的另一个重要原因,因为您可以花时间调整和更改一些东西,然后 运行 再次,甚至再次。

现在,如果您编写整个数据库(和数据)的脚本,此类文本文件会相当大,并且在大多数情况下,您无法使用 SSMS(sql management studio)加载此类一个脚本,因此使用命令行 sqlcmd.exe 导入(处理)您使用我上面概述的脚本向导创建的脚本数据库。它吐出一个“大”文本文件,可以导入到 2008 中。

我的意思是,即使在 2008 年和那个 SSMS 时代,它也有导入选项,您可以从访问数据库导入。但是,当您这样做时,PK 将被删除,索引将被删除,关系也会被删除。

因此,对于 2-5 个表 - 哎呀,只需使用 ssms 导入即可。

但是,如果您有 40 个表,大量的关系?那么是的,这是一项艰巨的工作,然后我会 100% 推荐您使用 Access 迁移助手工具。 (学习需要一点时间——一开始有点混乱,但是一旦你通过了学习曲线,如果你想向上移动很多表,我强烈推荐这个工具,保持 PK 设置,当然还保持相关数据完好无损。