我已经看到很多类似的问题,但是没有建议的解决方案对我有用。
我有一个名为“ MAIN”的Access 2010宏(在32位Office上)。该数据库包含针对不同数据库服务器的ODBC链接表以及复杂的联接查询,以比较和分析数据以生成CSV文件,以导入到第三方系统中。宏旨在自动运行这些查询,并将结果保存到CSV文件中,以供第三方导入工具稍后使用。
我的愿望是“无人值守”运行此宏,以便无论用户是否登录到系统,都按设定的时间表创建文件。目标系统正在运行Server 2008 R2(本机为64位Windows)。
我在网上看到的许多答案都表明Office Automation宏可能要求用户登录,以便Office程序具有有效的用户桌面会话。有几个人给出相反的答案-表示他们可以使用Windows Task Scheduler运行无人值守的Microsoft Access宏,并选择了“无论用户是否登录都运行”选项。
将“操作”设置为“启动程序”,将“程序/脚本”设置为“ C:\ Program Files(x86)\ Microsoft Office \ Office14 \ MSACCESS.EXE”,将参数设置为“ C:\ Test_Dir \ Test_DB.accdb “ / nostartup / x主
当我在设置的时间或按需运行计划的任务时,它会以2004年的MSACCESS ResultCode(返回值)(相当于0x7D4十六进制运行结果)快速完成。查看输出文件夹显示未创建文件。
但是,如果我将“安全选项”任务设置为“仅在用户登录时才运行”,则该任务将以正确的ResultCode 0(十六进制0x0)成功运行。输出文件将在期望的文件夹中按预期方式创建,但这仅在我登录系统时有效。
如果您有任何可行的建议,请提供潜在的解决方案。似乎我已经尝试了许多替代方法,但是我必须缺少一些东西,因为登出时安排无人参与的Access宏无法正常工作。
事实证明,我的问题与MSACCESS.exe被卡在任务计划程序引擎(taskeng.exe)下,并且测试运行失败,并且必须有一个未连接任何屏幕的对话框。
即使我使用Windows Task Scheduler来“结束”任务,MSACCESS.exe和taskeng.exe进程仍在后台运行,导致以下任务测试失败,除非我仅以登录身份运行它们(然后以标准流程运行,而不是在任务主机/任务引擎下运行)。
我必须使用任务管理器(taskmgr.exe)来显示所有用户的进程(包括计划任务),按映像名称排序,查找“ MSACCESS.exe”或“ taskeng.exe”的任何实例以及每个进程的结束进程。
我敢肯定,一次简单的重新启动也会清除掉这些卡住的进程,但这是一台共享的远程桌面(终端服务)服务器,当其他人登录时,我无法重新启动它。
清除掉那些卡住的进程之后,集成Windows身份验证(Trusted_Connection)和ODBC链接表的标准SQL身份验证用户名/密码数据库连接都根据需要为我执行了无人值守的任务。
我也使用内置的“ SYSTEM”用户(NT Authority \ System)进行了测试,希望该任务可以运行并且从不需要更改用户密码,但是该任务失败了,我不得不使用taskmgr.exe清除该文件。即使在结束计划的任务之后,卡住的进程仍会再次卡住。这可能就是我导致问题开始的原因。SYSTEM帐户运行MSAccess.exe时一定有问题-可能弹出一个我看不到的对话框。
现在,它可以正常工作,我将在标准域用户帐户下运行计划的任务,并在用户帐户更改密码后更新任务属性中的密码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句