数据库之间的自动信息传输

时间:2014-11-14 16:49:16

标签: sql-server-2008 ms-access-2010

我有一个使用Access数据库存储记录的应用程序。此应用程序是第三方应用程序,不能更改,但我可以打开数据库并查看它创建的所有记录。

我想知道的是 - 当在Access中创建记录时,有没有办法告诉Access将新记录发送到SQL数据库中的表。这需要在没有任何用户干预的情况下完成。在完美的世界中,这个应用程序将直接与SQL对话,但如果软件继续与Access通信,然后Access与SQL对话,我会满足于一个不完美的世界。

1 个答案:

答案 0 :(得分:1)

Access 2010确实引入了事件驱动的data macros,其行为类似于触发器。 After Insert数据宏可以在另一个本地Access表中创建记录,但不幸的是

  

数据宏中不允许包含链接表,操作查询和数据库引用的查询。

因此您无法在Access中使用After Insert数据宏将新记录“推送”到链接的SQL Server表中。

但是,您可以使用SQL Server中的预定作业从已在SQL Server中设置为链接服务器的Access数据库中“提取”新记录。例如,假设我们在Access

中有一个名为[Inquiries]的表

ID - 自动编号(递增),主键
InquiryDate - 日期/时间
ContactName - 文本(255)

和SQL Server中相应的[dbo]。[查询]表

ID - int,主键
InquiryDate - datetime
ContactName - nvarchar(255)

我们可以将Access数据库设置为SQL Server中名为ACCDBDATA的链接服务器,然后让SQL Server每隔一段时间运行一个预定作业,以便使用像这样的T-SQL语句从Access数据库中提取新记录

INSERT INTO dbo.Inquiries (ID, InquiryDate, ContactName)
SELECT ID, InquiryDate, ContactName
FROM ACCDBDATA...Inquiries
WHERE ID > (SELECT ISNULL(MAX(ID),0) FROM dbo.Inquiries)