我正在将现有Access数据库迁移到具有Web前端的SQL数据库。我已使用SQL Server迁移工具成功将数据库复制到SQL,并正在开发应用程序。由于我不会进入这里的原因,我们不能将Access前端链接到SQL DB并使用SQL DB作为单个数据源,因此Access DB仍在使用中并且数据正在更新。
我想要找到的是一种使用Access DB中的新数据更新SQL数据库中的数据的简单方法。表结构等是一样的,所以我需要做的就是复制数据,是否有脚本或简单方法来执行此操作?每次我需要进行更新时,我真的不想运行迁移向导。
答案 0 :(得分:6)
我还建议使用链接表到SQL服务器,但是它的声音不受你的控制。我希望这只是暂时的,因此用户可以在开发过程中继续使用Access DB,而不是因为某些经理认为这种手动集成系统是一个好主意“前进”
有一个更好的迁移到SQL服务器的工具名为Sql Server Migration Assistant(SSMA),它比Access中内置的“升迁向导”要好得多。您可以编写脚本以使任务可重复。
另一种方法是在Access数据库所在的任何地方设置SQL服务器的Express版本并将其链接到该服务器,并将其用作登台数据库。您可以将SSEE版本设置为replication订阅者,并在需要时同步它与您的开发/生产数据库之间的更改。对于用户来说,它将是透明的,您可以告诉管理层Access数据库与开发/生产数据库完全分开。或者只是复制数据库,如果你不能学习复制,但我认为复制可以使这一切变得更加简单。
答案 1 :(得分:2)
您可以通过VBA运行访问查询,以添加新记录并更新SQL Server中的先前记录。连接字符串与用于连接SQL表的连接字符串相同,正如我在此粗略示例中指出的那样,因此您可以测试连接到相关表以获取合适的字符串:
Dim db As Database
Set db = CurrentDb
strConnect = db.TableDefs("dbo_test").Connect
strSQL = "UPDATE [" & strConnect & "].[test] As s " _
& "INNER JOIN TestAccess As a " _
& "ON s.ID=a.ID " _
& "SET s.Descr=a.Descr WHERE s.Descr<>a.Descr"
db.Execute strSQL, dbFailOnError
Debug.Print db.RecordsAffected
strSQL = "INSERT INTO [" & strConnect & "].[test] (ID, Descr) " _
& "SELECT a.ID, a.Descr FROM TestAccess As a " _
& "LEFT JOIN [" & strConnect & "].[test] s " _
& "ON s.ID=a.ID " _
& "WHERE s.ID Is Null"
db.Execute strSQL, dbFailOnError
Debug.Print db.RecordsAffected
答案 2 :(得分:0)
可以将SQL Server表链接到Access,其中Access表单可以正常输入数据,但实际上它将进入SQL Server。