我有一个访问2003数据库,其中包含我的所有业务数据。此访问数据库在白天每隔几个小时更新一次。
我们目前正在编写一个需要使用访问数据库中数据的网站。本网站(目前)仅具有 只读功能。这意味着只需要单向传输数据(Access - > SQL)。
我正在成像有一种方法可以以编程方式从访问SQL服务器执行此数据迁移。有没有人可以链接到我能读到的东西?
如果这种做法听起来很奇怪,并且您想建议另一种方法(或者数据可以双向进行的情况(Access - &gt; SQL,SQL - &gt; Access)),那就完全没问题。< / p>
该公司将继续使用Access 2003来实现其业务功能。没有办法解决这个问题。但我想在SQL Server上构建(只读)网站。
答案 0 :(得分:2)
要进行初始数据迁移并自动设置SQL Server,我会使用SQL Server Migration Assistant。你唯一应该改变的就是我能想到的就是关闭任何有它的列上的Identity属性 - 下面将对此进行解释(MS Access调用Identity autonumber)。加载表后,可以为刚刚创建的数据库(和表)设置dsnless connection。
我没有使用刚刚链接的方法,但我相信它允许您使用SQL Server身份验证连接到数据库。使用此方法的好处是您可以轻松更改要连接的SQL Server实例和/或数据库以进行开发和测试。
可能有一种更好的自动化方式,但您可以创建多个插入查询,从Access表的主键到SQL Server表执行左连接,并放置一个指定SQL Server的WHERE
子句PrimaryKey必须为null。这就是您需要关闭SQL Server表中的Identity属性的原因,以便您可以插入新数据。
最后,将每个查询的名称放在一个函数中,然后定期运行该函数。
答案 1 :(得分:1)
我使用Microsoft的免费SQL Server Migration Assistant (SSMA)迁移Access到SQL Server。该工具使用起来非常简单。我在工具中遇到的唯一问题是迁移时重载的数据类型。我的意思是,在某些情况下,一个小字符串将转换为NVARCHAR(MAX)
。否则,该工具非常方便,可以在设置“配置文件”后重复使用。
答案 2 :(得分:1)
您概述的策略可能非常具有挑战性。您可以使用INSERT
查询将新的Access行复制到SQL Server,如另一个答案中所述。
但是,如果您对现有Access行进行了更改,并且还希望将这些更改传播到SQL Server,则不会这么简单。如果你想要删除从SQL Server中删除的Access行,它将会更复杂。
使用不同的方法对我来说似乎更合理。将数据迁移到SQL Server一次。然后使用指向SQL Server表的ODBC链接替换Access数据库中的表。此后,从Access应用程序中更改数据将不需要单独的同步步骤......它们已经在SQL Server中。而且您不需要编写任何代码来同步它们。
如果您担心Web服务器和SQL Server之间的连接是只读的,只需按照这种方式进行设置即可。您仍然可以独立地允许Access应用程序的读写权限。