2

我需要自动从 Access (2003) 迁移到 SQL Server DB (2005 或 2008)。升迁应该作为构建过程的一部分自动完成。

我需要它,因为该软件有 2 个版本,一个用户富客户端和一个 Web 版本。Access DB 用于单个用户以最大程度地减少设置工作,SQL Server 用于提高性能并与许多同时用户进行扩展。Access 应该是“领先的”数据库,这意味着开发人员在 Access DB 中进行更改,并且这些更改会在构建过程中传播到 SQL 服务器。将发生许多更改,因此手动进行不是一种选择。

我是微软世界的新手,所以我不知道合适的工具。我可以使用哪些工具以及如何使用?我知道如何使用升迁助手(通过单击)来做到这一点。也许我可以以某种方式自动化?

提前感谢您的回答。干杯,阿恩

4

2 回答 2

2

Why not use a SQL Server backend for The Access database? Then changes are only made once and all is in synch.

于 2010-06-07T18:35:09.870 回答
0

这里的问题是你试图用两个不同的系统做 versing。

如果所有的设计更改都可以在 Access 中完成,那么您可以简单地将其扩大到 sql server。这里的问题是你需要修改现有的sql server数据库吗?而且,随着时间的推移,你需要这个吗?升级访问数据库将使新版本升级到 sql server,但它对现有的 sql server 数据库没有帮助。

如果您需要随着时间的推移对两个系统和现有系统上的表进行更改,那么我会向访问开发人员声明,对表的所有更改都必须写为 ddl sql。然后,您使用在 Access 上执行的 ddl 进行更改。开发人员必须在那个时候使用相同的 ddl 并在 sql 端运行它。它可能需要稍作修改。他们修复它以在 sql server 上运行。因此,您最终会得到两个脚本。一个用于 sql server,一个用于 Access。在访问的情况下你可以写几行代码来读取和处理一个ddl的文本文件。(相同的代码可用于所有脚本)。

这样,您就可以为每次升级建立一组等效的更改。因此,绝不允许直接对访问表进行设计更改。如果您允许使用表设计器进行设计更改,那么您将遇到大麻烦,因为您现在不知道需要将哪些更改转移到 sql server。

但是,作为更好的推荐方法,我建议首先在 sql server 中完成表设计更改。原因是 sql Visual Studio 工具中的表设计器允许将刚刚所做的更改脚本化到剪贴板(简单的右键单击)。另一个原因是表设计器与访问设计器非常相似。因此,即使对于几乎没有 sql server 经验的访问开发人员也可以轻松使用。因此,简单的右键单击“脚本更改到剪贴板”将为 sql server 创建需要更改脚本(他们会将其保存到 sql server 的文件中)。然后他们获取 ddl,并在访问端运行它。这样做的原因是 ddl 可能需要对 Access 进行一些轻微的修改(但是,他们不必编写 ddl 语句)。所以,这意味着 ddl 是为他们编写的。这意味着您知道 sql server ddl 是正确的。然后他们只需使用该 ddl 并再次使用来更改访问表。ddl 可能需要稍作更改才能访问,但这很好,因为他们需要更改表,然后运行并修复此问题,直到进行简单的表更改。因此,这个脚本化的 ddl 也将被保存到文件中以进行访问更新。ddl 脚本可能需要稍作修改才能访问,所以我认为这种方法是最好的。只要随着它们的进行而更改/修复,就可以了。因此,这个脚本化的 ddl 也将被保存到文件中以进行访问更新。ddl 脚本可能需要稍作修改才能访问,所以我认为这种方法是最好的。只要随着它们的进行而更改/修复,就可以了。因此,这个脚本化的 ddl 也将被保存到文件中以进行访问更新。ddl 脚本可能需要稍作修改才能访问,所以我认为这种方法是最好的。只要随着它们的进行而更改/修复,就可以了。

So over a period of changes, you wind up with two scripts that keep the changes in sync for both systems.

If you don't need changes to existing sql and access databases, then just let the access folks have at it, and then simply up size the whole database to sql server in one shot and you done.

I can't really think much of any other approach between the above two extremes.

You could have the users make the change in access and then go to sql server to make the change in the sql table design and then save the sql server change script. However, this would not get you a change script for the access side. If a change script is NOT needed for access side then this would work very well as you would get a sql server change script.

The above would be how I go about this and it quite workable...

于 2010-06-07T18:31:58.510 回答