将数据从 SQL Server 移至 MS Access mdb

4

我需要将我们的SQL Server数据库中的某些信息转移到MS Access数据库中。 我已经设置好了访问表结构。 我正在寻找一个纯SQL解决方案; 我可以直接从ssms运行而不必在c#或vb中编写任何代码。

如果我首先设置odbc数据源,我知道这是可能的。 我想知道是否可以在没有odbc数据源的情况下完成此操作?


2
我已经阅读过,你可以在SQL Server中设置Access数据库作为链接服务器。然后,也许可以执行插入语句,将所选的SQL Server数据添加到Access表中。(这只是一个构思。) - HansUp
谢谢 Hans,这正是我在寻找的。如果你愿意把它作为答案,我会标记它。 - Brandon Moore
3个回答

4
如果您想要一个“纯”SQL解决方案,我的建议是使用OPENDATASOURCE从SQL服务器连接到Access数据库。
然后,您可以使用T-SQL编写INSERT指令。它将如下所示:
INSERT INTO OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=myDatabaseName.mdb')...[myTableName] (insert instructions here)

您的INSERT操作的复杂性取决于SQL和ACCESS数据库之间的差异。如果表格和字段名称相同,那么将非常容易。如果模型不同,您可能需要构建特定的查询来“塑造”数据,然后才能将其插入到MS-Access表格和字段中。但即使变得复杂,也可以通过“纯SQL”处理。


哦,我希望你在我实现链接服务器解决方案之前就回答了。不过我可能会转换到这种方法,因为它可以减少一个故障点,而且不用担心是否创建了链接服务器。 - Brandon Moore
2
如果你使用Access 2010或者你的环境是混合的64位/32位,这可能会变得非常复杂。此外,你可能需要允许Ad Hoc分布式查询和其他一些事情。否则,这将是非常有趣的。 - Fionnuala
#remou,你说得对,需要更新“had oc distributed queries”参数。我忘记了,但这只是一个简单的TSQL语句,而且服务器返回的错误信息很明确。 - Philippe Grondier

1

考虑在SQL Server中将您的Access数据库设置为链接服务器。我在另一个SO问题的答案中找到了说明并发布了它们。我自己还没有尝试过,所以不知道您可能会遇到什么挑战。

但是,如果您可以链接Access数据库,我认为您可以从SQL Server内部执行插入语句,将所选的SQL Server数据添加到Access表中。


+1,但是看起来我可能谎称将你的答案标记为正确答案...希望你能原谅我 :) 我必须尝试一下Philippe的解决方案,因为它根本不需要设置链接服务器。 但是请注意,我已经实施了这个解决方案,而且效果非常好! - Brandon Moore
不用担心,Brandon。我也喜欢那个方法。我曾经尝试过一次,但是记忆不太清晰。可能与信任OPENDATASOURCE有关。你会想出来的。 :-) - HansUp

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接