gpt4 book ai didi

c# - MS Access 互操作 - 数据导入

转载 作者:行者123 更新时间:2023-11-30 22:50:10 25 4
gpt4 key购买 nike

我正在开发一个将 SQL 导出到 Access 的 exe,我们不想使用 DTS,因为我们有多个客户端,每个客户端都导出不同的 View ,而且设置和维护 DTS 包的开销太大。

*编辑:许多客户每晚都会自动执行此过程,因此必须在存储过程中的游标内启动和控制整个过程。这是因为必须按项目过滤数据才能导出。

我已经尝试了很多方法将数据从 SQL 获取到 Access 中,最有前途的方法是使用 Access interop 并运行一个

doCmd.TransferDatabase(Access.AcDataTransferType.acImport...

我在从 View 中导入时遇到了一个问题,手动运行导入似乎 View 没有足够快地开始返回数据,因此 Access 弹出一个 MessageBox 对话框说它已超时。我认为这也在互操作中发生,但因为它是隐藏的,所以该方法永远不会返回!

我有什么办法可以防止弹出此消息,或增加导入命令的超时时间吗?

我目前的攻击计划是将 View 展平成一个表,然后从该表导入,然后删除展平的表。

很高兴收到有关如何解决此问题的任何建议。

编辑:

关于我在做什么的更多信息:

我们有多个客户端,每个客户端都有一个标准数据模型。 “模块”之一是 Access 导出器 (sproc)。它从参数表中读取要导出的 View ,然后导出。 View 按项目过滤,并为每个项目创建一个 Access 文件(每个 View 都有项目字段)

我们正在运行 SQL 2005,不会很快迁移到 SQL 2005,我们可能会在几个月后跳到 2008。

然后我们有一个模块执行作业,它在每个数据库上执行配置的模块。在这个模块执行中有很多导入/导出/其他作业, Access 导出器必须能够适应这个框架。所以我需要一个通用的 SQL -> Access 导出器,它可以通过我们的参数框架进行配置。

目前 sproc 调用我编写的 exe,我的 exe 通过互操作打开 Access 权限,我知道这对服务器不利,但模块执行已编写,因此一次只执行一个模块,因此该过程永远不会一次运行多个实例。

最佳答案

您尝试过使用 VBA 吗?您有更多配置连接的选项,而且我确信我过去曾在该上下文中使用过超时调整。

此外,我通常发现直接查询 View 最简单(只要您可以使用无锁连接,或者容忍传输所需的时间);这可能是创建中间临时表的一个很好的理由。

对于这些东西,在单用户模式下显式打开 Acces 也可能有好处。

关于c# - MS Access 互操作 - 数据导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/708042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com