我开发了一个C#程序,它从SQL Server数据库中提取数据,然后生成包含这些数据的Word文档。我已将该程序设置为在Windows Server 2003计算机上作为SSIS作业的一部分运行。该程序以没有管理权限的用户SQLSVC身份运行。当我作为SQLSVC登录并运行程序时,它可以正确执行。但是,当程序作为SSIS作业自动运行时,它会在以下代码行冻结
Microsoft.Office.Interop.Word.Application word =
new Microsoft.Office.Interop.Word.Application();当我强制终止进程时,会生成以下错误消息。
Error Message: System.Runtime.InteropServices.COMException (0x80080005):
Retrieving the COM class factory for component
with CLSID {000209FF-0000-0000-C000-000000000046}
failed due to the following error: 80080005.
at IepGlance.Program.CreateNewIepFiles(Dictionary`2
iepDictionary, EasyIepDataContext dbContext)
at IepGlance.Program.Main(String[] args)据我所知,问题出在DCOM权限上。我已经使用dcomcnfg为用户SQLSVC添加了所有可能的DCOM权限,但这并没有帮助。还有其他可能的解决方案吗?
发布于 2014-12-01 08:12:58
运行程序"dcomcnfg -32“。(如果在64位下运行,则找不到word和excel组件)转到“控制台根目录/组件服务/计算机/我的电脑/DCOM配置/”查找Microsoft Word和Excel并选择属性。转到“安全”,在“配置权限”下选择“自定义”。(如果需要,你可能也想更改其他权限,但我不需要这样做)添加"IIS_IUSRS“并赋予它”完全控制“。现在转到”身份“并选择”交互式用户“。
发布于 2009-11-07 00:56:57
这里有几件事。
首先,这个thread on SO可能会有所帮助。
其次,当您通过无人值守的过程自动化Microsoft warns时,可能会出现“并发症”。以下是笑点(在原文中以粗体显示):
Office目前不建议也不支持从任何无人参与的、非交互的客户端应用程序或组件(包括
、ASP.NET、DCOM和NT服务)自动运行Microsoft Office应用程序,因为当Office在此环境中运行时,可能会表现出不稳定的行为和/或死锁。
链接的文章讨论了解决方法。
发布于 2011-09-02 23:32:44
这取决于你是在64位计算机上,还是在32位office或64位Office上,但在这两种情况下,你都需要进入管理工具>组件服务,在DCOM配置下,你需要找到“Microsoft Word 97 - 2003文档”,然后将“身份”设置为运行应用程序池的用户。或者干脆禁用它的安全保护。
如果您运行的是带有32位Office的64位服务器,则可能很难找到此DCOM设置。您需要从命令提示符运行"MMC -32“来启动32位MMC,然后从”文件>添加/删除管理单元“菜单中添加”组件服务“。
希望这能有所帮助
https://stackoverflow.com/questions/1688853
复制相似问题