如何从 SQL Server 读取 MS Access 数据库以更新一个或多个表列中的数据?
Posted
技术标签:
【中文标题】如何从 SQL Server 读取 MS Access 数据库以更新一个或多个表列中的数据?【英文标题】:From SQL Server how do I read from an MS Access database to UPDATE data in one or more table columns? 【发布时间】:2012-01-29 18:07:23 【问题描述】:我的 SQL Server 数据库表中有一个列需要使用 MS Access 文件中的数据进行更新。如何查询 MS Access 数据以执行此类更新?
导入向导似乎只处理插入新数据而不是更新现有数据?还是我误解了如何使用向导?
【问题讨论】:
这不是微不足道的;您必须在 MSACCESS 数据库和 SQL Server 之间建立连接,并运行一些 UPDATE 查询。 我认为您的出发点是错误的。我会在 Access 中编写代码来执行更新。您可能需要从 SQL Server 检索数据,然后执行比较以确定应更新的记录。或者,查看 SSIS(这里是一个标签)。 【参考方案1】:听起来您想从 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;
【讨论】:
【参考方案2】:首先在 Windows 中设置一个 ODBC DSN。打开控制面板 > 管理工具 > 数据源 (ODBC)。请注意,在 64 位 Windows 上,这可能会打开 64 位管理员。但是,如果您有 32 位访问权限,则需要 32 位管理员 (%windir%\SysWOW64\odbcad32.exe)。
然后您可以将 SQL-Server 表链接到您的访问数据库。在 Link Tables 对话框中,选择“ODBC Databases()”作为文件类型。
然后您可以像访问表一样查询链接的 SQL Server 表。
见Configure Microsoft Access Linked Tables with a SQL Server Database
【讨论】:
嗯...在 64 位 Windows 上,我认为 %windir%\system32\odbcad32.exe 是 64 位版本,而 %windir%\SysWoW64\odbcad32.exe 应该是 32 位版本. 对于这个领域的新手来说,“DSN”是一个“数据源名称”。它是“应用程序用来请求连接到 ODBC 数据源的名称”。在这里阅读更多:support.microsoft.com/en-us/help/966849/…以上是关于如何从 SQL Server 读取 MS Access 数据库以更新一个或多个表列中的数据?的主要内容,如果未能解决你的问题,请参考以下文章
从 MS Access 批量导入并插入 Sql Server [关闭]
SeriLog 使用经典 .net 框架从 sql server 读取属性值