使用SSMA将Access 2007数据库应用程序迁移到SQL Server 2005 - 问题

时间:2009-03-02 02:36:58

标签: sql-server ms-access ms-access-2007 sql-server-migration-assi

我已经设法在我的计算机上启动并运行SQL Server 2005 Express,以便在“真实世界”中尝试之前进行一些测试。

我有一个相当大的MS Access 2007数据库应用程序,我需要迁移到SQL Server 保留“前端”作为用户界面。 (该应用程序'已经是一个“拆分”数据库 有前端和后端....)

我已经对使用SSMA将我的Access数据库迁移到SQL做了一些初步测试 Server Express。

显然,我不了解某些事情,我想我会看到是否有人 任何想法。

从概念上讲,我认为需要发生的是后端 驻留在服务器上的数据库需要迁移到SQL Server 然后前端重新链接到后端的(现在链接到SQL)表。

当我使用SSMA执行此操作时,我最终会在后端重命名表格 访问文件看起来像“SSMA $ myTableNameHere $ local”。我也 获取显示为ODBC链接表的原始表名。

到目前为止一切顺利。

但......当我从FRONT END重新建立链接表时( 用户界面)我只能看到“SSMA $ myTableNameHere $ local”的名字 原始表名。(现在通过ODBC链接) 我可以链接到“SSMA ,,,,”表,但这意味着要更改名称 每个查询中的每个表格以及每个表格和前面的所有代码 结束!不是我真正想做的事。

SO ....

我以为我会尝试迁移FRONT END,看看会发生什么。

我最终得到的是一种情况,基本上它是有效的(有 一些严重的错误和问题,我还没有看过......就像 缺少数据等!!!!)我仍然得到“SSMA $ myTableNameHere $ local” 表和具有原始名称的ODBC链接表。

我试图理解......这是否意味着我们会这样做 在前端迁移,然后只是将相同的文件复制到每个用户 计算机?

我有点困惑的另一个主题是我无法通过ODBC链接 到本地机器上的SQL Server Express(即我的电脑)所以我无法测试 迁移后端,然后通过前端链接到表格 在过去更多的客户/服务器情况。

6 个答案:

答案 0 :(得分:2)

假设SSMA使用指向SQL Server的链接替换后端中的表,您只需删除前端中的原始表链接并导入新创建的表链接来自后端。然后你可以丢弃后端,因为它根本不用于任何东西。

答案 1 :(得分:1)

我确实使用ODBC将所有表格逐个传输到Access Server后端的SQL Server 2005.Instruction: Open Access DB(后端) 右键单击表,您需要转移 向下滚动下拉框并选择“ODBC数据库” 选择“数据源”对话框打开,单击“新建”按钮 打开新建数据源对话框 滚动到底部并选择SQL Server,单击“下一步” 为您的数据源命名,单击“下一步”,然后单击“完成” 将打开“创建新数据源”对话框 给出一些描述或留空,SQL Server的类型名称(在机器上安装SQL Server时命名它) 单击Next,单击Next 选中“将默认数据库更改为复选框” 选择要将数据传输到的DB 单击Next,单击Finish 注意:在执行所有这些操作之前,您需要在SQL Server上创建新的DB(空) 现在:右键单击任何表,选择Export,从下拉列表中选择ODBC,从Data Sources窗口选择您的数据源,您创建,单击OK 将SQL Server与SQL Management Studio Express一起使用。 所有日期都必须有输入掩码;所有文本和备注必须具有允许零长度=是 毕竟从Access后端断开所有链接,并建立从SQL.RENAME链接所有新链接的表到旧名称。使用Fron-end用户界面,直到做一些新的。

答案 2 :(得分:0)

原谅我对Acronym Soup缺乏了解,但我认为SSMA是SQL Server 2005的“导入数据向导”或Access中的向导将数据发送到SQL Server。您似乎是从Access将数据发送到SQL Server - 这是您不想做的事情。您想在SQL Server中使用DTS(现在称为SSIS或其他什么?)将数据导入SQL Server。然后,您将在SQL Server中拥有表。然后,只需为SQL Server创建DSN条目并重新链接表。一切都应该好。

总的来说,一般规则是使用SQL Server导入Access表,而不是使用Access将数据发送到SQL Server。

答案 3 :(得分:0)

我咬紧牙关并将SQLServer端的表重命名为原始数据库中的友好名称。你可能会遇到的问题更少。特别是如果您有任何嵌入式代码MS Access端。

至于你现在如何部署MS Access端,它应该在用户的工作站上创建ODBC链接,并将MS Access文件复制到他们的桌面(尽管你可能想要制作MDE(或者2007年的等价物)以防止它们意外破坏它。)

答案 4 :(得分:0)

坦率地说,既然您已经迁移了,那么您需要查看表的设计。根据我的经验,Access迁移的向导在选择正确的数据类型方面做得很差。例如,如果你有一个备注字段,你可能很容易使用varchar字段,但我使用的最后一个向导(早期版本)总是将它们转换为文本字段。现在也是时候考虑一​​些修复方法,比如如果你过去曾经犯过那个错误,那么就把日期文件设置为datetime而不是基于字符。

我永远不会考虑再次使用向导进行数据迁移,我自己也经历过非常糟糕的事情。

您会发现只是将数据转换为SQL Server通常不足以真正获得任何性能优势。你需要测试所有查询,并考虑是否可以将它们转换为存储过程,如果它们很慢的话。消除从Jet SQL到T-sql的转换可以提高性能。此外,t-sql的许多功能可以提高没有Access等效的性能。访问在性能调优方面并不重要,但要获得使用SQL Server后端进行性能调优的好处,您需要编写SQL Server特定的查询。如果Access表没有正确索引,则需要考虑索引。

答案 5 :(得分:0)

使用odbc时,使用SSMA会有所不同。如果您的应用程序使用完全访问权限(后端和前端)。您可以使用DAO等操作对象轻松绑定表单。没有问题,那么当您需要将数据库迁移到sql server时,您可以直接使用odbc(通过将自己的表连接到sql server),ssma,...主要问题如何在客户端保留有界形式,查询和代码。 如果你直接使用odbc,你必须自己重新链接所有对象并更改代码,但如果你使用ssma,你必须什么都不做,你将继续像以前一样工作。 SSMA的问题是如果使用其他sql服务器在其他地方开发客户端,如何将前端部署到客户端?