定期将访问数据库复制到SQL服务器

3
我有一个保存所有业务数据的Access 2003数据库。这个数据库在一天内每隔几个小时都会更新。
我们目前正在编写一个需要使用访问数据库中数据的网站。这个网站(目前)只有只读功能,也就是说只需要单向数据传输(从Access到SQL)。
我想象中有一种方法可以通过编程方式执行从Access到SQL Server的数据迁移。有没有人能提供我一些可以阅读的链接?
如果这种做法听起来很奇怪,并且您希望提出另一种方法来实现(或者是可以双向传输数据的情况(Access-> SQL,SQL-> Access),那么完全可以)。
公司将继续使用Access 2003进行其业务功能。这是无法避免的。但我想在SQL Server上构建(只读)网站。
3个回答

2
为了进行初始数据迁移并自动设置SQL Server,我会使用SQL Server Migration Assistant。我能想到的唯一需要改变的事情就是关闭任何具有Identity属性的列 - 以下将进行解释(MS Access将Identity称为autonumber)。一旦您的表已加载,您可以设置一个dsnless连接到您刚创建的数据库(和表)。
我没有使用刚才链接的方法,但我相信它允许您使用SQL Server身份验证来连接到数据库。使用此方法的好处是您可以轻松更改用于开发和测试的SQL Server实例和/或数据库。
可能会有更好、更自动化的方法,但您可以创建多个插入查询,从Access表的主键左连接到SQL Server表,并放置一个WHERE子句指定SQL Server PrimaryKey必须为null。这就是为什么您需要在SQL Server表中关闭Identity属性,以便您可以插入新数据。
最后,将每个查询的名称放在一个函数中,然后定期运行该函数。

2
您提出的策略可能非常具有挑战性。您可以使用INSERT查询将新的Access行复制到SQL Server中,如另一个答案所述。
但是,如果您对现有的Access行进行更改,并且您还希望这些更改传播到SQL Server,那么情况就不那么简单了。如果您还希望从SQL Server中删除已删除的Access行,则情况会更加复杂。
在我看来,使用不同的方法更为合理。将数据迁移到SQL Server一次。然后,用ODBC链接替换Access数据库中的表与SQL Server表之间的链接。此后,通过Access应用程序对数据进行的更改将不需要单独的同步步骤...它们已经在SQL Server中。您也无需编写任何代码来进行同步。
如果您担心Web服务器与SQL Server之间的连接是只读的,请设置它们。您仍然可以独立地允许Access应用程序具有读写权限。

1
我使用了微软免费的SQL Server Migration Assistant (SSMA)来将Access迁移到SQL Server。这个工具非常简单易用。我在使用这个工具时唯一遇到的问题是在迁移时出现了数据类型过载的情况。我的意思是,在某些情况下,一个小字符串会被转换为NVARCHAR(MAX)。除此之外,这个工具非常方便,并且可以在设置“配置文件”后重复使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接