3

我有一个 access 2003 数据库,其中包含我所有的业务数据。该访问数据库在白天每隔几个小时更新一次。

我们目前正在编写一个需要使用访问数据库中的数据的网站。该网站(暂时)将仅具有只读功能。这意味着只需要一种数据传输方式(Access -> SQL)。

我正在想象有一种方法可以以编程方式执行从访问 SQL 服务器的数据迁移。有没有人有我能读到的东西的链接?

如果这种做法听起来很奇怪,并且您想建议另一种方法来执行此操作(或者数据可以双向传输(Access -> SQL,SQL -> Access)的情况,那很好。

该公司将继续使用 Access 2003 来实现其业务功能。没有办法解决这个问题。但我想在 SQL Server 之上构建(只读)网站。

4

3 回答 3

2

您概述的策略可能非常具有挑战性。INSERT如另一个答案中所述, 您可以使用查询将新的 Access 行复制到 SQL Server。

但是,如果您对现有的 Access 行进行了更改,并且还希望将这些更改传播到 SQL Server,那么事情就不会那么简单了。如果您也想从 SQL Server 中删除已删除的 Access 行,这将更加复杂。

对我来说,使用不同的方法似乎更合理。将数据迁移到 SQL Server 一次。然后用指向 SQL Server 表的 ODBC 链接替换 ​​Access 数据库中的表。此后,从 Access 应用程序中对数据的更改将不需要单独的同步步骤……它们已经在 SQL Server 中。而且您不需要编写任何代码来同步它们。

如果您担心 Web 服务器和 SQL Server 之间的连接是只读的,只需按这种方式设置它们。您仍然可以单独授予 Access 应用程序的读写权限。

于 2012-09-05T06:30:57.863 回答
2

要进行初始数据迁移并自动设置 SQL Server,我会使用SQL Server Migration Assistant。我能想到的唯一绝对应该改变的事情是关闭任何具有它的列上的 Identity 属性 - 将在下面解释(MS Access 调用 Identity autonumber)。一旦你加载了你的表,你就可以建立一个到你刚刚创建的数据库(和表)的dsnless 连接。

我没有使用刚刚链接的方法,但我相信它允许您使用 SQL Server 身份验证连接到数据库。使用此方法的好处是您可以轻松更改要连接到哪个 SQL Server 实例和/或数据库以进行开发和测试。

可能有更好的自动化方法,但您可以创建多个插入查询,执行从 Access 表的主键到 SQL Server 表的左连接,并放置一个WHERE指定 SQL Server PrimaryKey 必须为空的子句。这就是为什么您需要关闭 SQL Server 表中的 Identity 属性,以便您可以插入新数据。

最后,将每个查询的名称放在一个函数中,然后定期运行该函数。

于 2012-09-05T00:43:23.567 回答
1

我使用 Microsoft 的免费SQL Server 迁移助手 (SSMA)将 Access 迁移到 SQL Server。该工具使用起来非常简单。我在使用该工具时遇到的唯一问题是迁移时数据类型过载。我的意思是NVARCHAR(MAX)在某些情况下,一个小字符串会被转换为 a 。否则,该工具非常方便,可以在设置“配置文件”后重复使用。

于 2012-09-05T00:17:02.950 回答