[英]Copy access database to SQL server periodically
我有一个Access 2003数据库,其中包含我的所有业务数据。 该访问数据库在一天中每隔几个小时更新一次。
我们当前正在编写一个网站,该网站将需要使用访问数据库中的数据。 该网站(暂时)将仅具有只读功能。 这意味着只需要一种方式进行数据传输(访问-> SQL)。
我正在想像有一种方法可以通过编程方式从访问SQL Server进行数据迁移。 有没有人链接到我可以阅读的内容?
如果这种做法听起来很奇怪,并且您想提出另一种方法(或者数据可以同时双向访问(Access-> SQL,SQL-> Access)的情况),那很好。
该公司将继续使用Access 2003来实现其业务功能。 没有办法解决。 但是我想在SQL Server之上构建(只读)网站。
要进行初始数据迁移并自动设置SQL Server,我将使用SQL Server Migration Assistant 。 您绝对可以更改的唯一可以想到的就是关闭具有该属性的任何列上的Identity属性-下文将对此进行说明(MS Access调用Identity自动编号)。 装入表后,可以建立与刚刚创建的数据库(和表)的dsnless连接 。
我没有使用仅链接的方法,但是我相信它允许您使用SQL Server身份验证连接到数据库。 使用此方法的好处是您可以轻松更改要连接到哪个SQL Server实例和/或数据库以进行开发和测试。
可能有一种更好的自动化方法,但是您可以创建多个插入查询,以执行从Access表的主键到SQL Server表的左联接,并放置一个WHERE
子句以指定SQL Server PrimaryKey必须为null。 这就是为什么您需要在SQL Server表中关闭Identity属性,以便可以插入新数据的原因。
最后,将每个查询的名称放在一个函数中,然后定期运行该函数。
我已经使用了Microsoft的免费SQL Server迁移助手(SSMA)将Access迁移到SQL Server。 该工具使用非常简单。 我使用该工具遇到的唯一问题是迁移时数据类型过载。 我的意思是,在某些情况下,一个小字符串将转换为NVARCHAR(MAX)
。 否则,该工具非常方便,可以在设置“配置文件”后重新使用。
您概述的策略可能非常具有挑战性。 您可以使用INSERT
查询将新的Access行复制到SQL Server,如另一个答案中所述。
但是,如果对现有的Access行进行了更改,并且还希望将这些更改传播到SQL Server,它将不会那么简单。 如果您还想从SQL Server删除Access行,那将仍然更加复杂。
对我来说,使用其他方法似乎更合理。 一次将数据迁移到SQL Server。 然后,用到SQL Server表的ODBC链接替换Access数据库中的表。 之后,从Access应用程序中对数据进行的更改将不需要单独的同步步骤...它们已经在SQL Server中。 而且您无需编写任何代码即可同步它们。
如果您担心Web服务器和SQL Server之间的连接是只读的,只需以这种方式进行设置即可。 您仍然可以独立地允许Access应用程序具有读写权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.