2012-01-29 66 views
6

我的SQL Server数据库表中有一列需要使用MS Access文件中的数据更新。我如何查询MS Access数据来执行此类更新?从SQL Server中,如何从MS Access数据库读取更新一个或多个表列中的数据?

导入向导似乎只处理插入新数据而不更新现有数据?或者我误解了如何使用向导?

+0

这不是微不足道的;您必须在MSACCESS数据库和SQL Server之间建立连接,并运行一些UPDATE查询。 – 2012-01-29 18:09:49

+2

我认为你是从错误的观点开始的。我会在Access中编写代码来执行UPDATE。您可能需要从SQL Server中检索数据,然后执行比较以识别应该更新的记录。或者,查看SSIS(这里是一个标签)。 – DOK 2012-01-29 18:10:27

回答

4

首先在Windows中设置ODBC DSN。打开控制面板>管理工具>数据源(ODBC)。请注意,在64位Windows上,这可能会打开64位管理员。但是,您需要32位管理员(%windir%\ SysWOW64 \ odbcad32.exe)。

然后,您可以将SQL-Server表链接到您的访问数据库。在“链接表”对话框中,选择“ODBC数据库()”作为文件类型。

然后,您可以查询链接的SQL Server表,就好像它们是访问表一样。

Configure Microsoft Access Linked Tables with a SQL Server Database

+0

嗯...在64位窗口,我认为%windir%\ system32 \ odbcad32.exe是64位版本,而%windir%\ SysWoW64 \ odbcad32.exe应该是32位版本。 – 2013-11-25 18:03:35

+0

@OskarBerggren:你当然是对的。我纠正了它。 – 2013-11-25 21:17:34

7

听起来像是你想从SQL Server端...“拉”的Access数据到SQL Server运行操作。如果是这样,您可以将Access文件设置为SQL Server中的链接服务器。我没有这样做,但已经阅读过其他人拥有的案例。我从SQLServerPedia的How can I link a SQL Server database to MS Access using link tables in MS Access?复制这些步骤。

1) Open EM. 
2) Goto the Server to which you want to add it as linked server. 
3) Then goto security > Linked Servers section from console tree. 
4) Right click on the Client area. Then New Linked Server. 
5) Give a name and Specify Microsoft Jet 4.0 as Provider string. 
6) Provide the location of the MDB file. 
7) Click OK. 

或者,您可以从Access端运行操作,并将数据推送到SQL Server。如果这可能适用于您,请使用Olivier的说明来设置ODBC链接的SQL Server表。或者你没有创建DSN:Using DSN-Less Connections

无论哪种方式,您链接表,从Access内运行,那么可能是简单的UPDATE声明:

UPDATE 
    linked_table AS dest 
    INNER JOIN local_table AS src 
    ON dest.pkey_field = src.pkey_field 
SET dest.access_data = src.access_data 
WHERE 
    dest.access_data <> src.access_data 
    OR dest.access_data Is Null; 
相关问题