办公自动化的DCOM失败

我开发了一个C#程序,从SQL Server数据库中提取数据,然后生成包含数据的Word文档。 我已经将该程序设置为在Windows Server 2003框中作为SSIS作业的一部分运行。 该程序以不具有pipe理权限的用户SQLSVC运行。 当我以SQLSVC身份login并运行该程序时,它将正确执行。 但是,当程序自动作为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将所有可能的DCOM权限添加到用户SQLSVC,但是这没有帮助。 还有其他可能的解决scheme吗?

Solutions Collecting From Web of "办公自动化的DCOM失败"

运行程序“dcomcnfg -32”。 (如果它运行在64位以下,不能找到Word和Excel组件)转到“控制台根目录/组件服务/计算机/我的电脑/ DCOM配置/”查找Microsoft Word和Excel并选择属性。 转到安全性并选择“配置权限”下的“自定义”(如果需要,您可能需要更改其他权限,但我不需要)添加“IIS_IUSRS”,并给它“完全控制”。 “身份”并选择“交互式用户”。

几件事在这里。

首先,这个线程可能会有所帮助。

其次, 微软警告说 ,当您通过无人参与的流程自动化Office时,可能会出现“复杂性”。 这里有一个重点(粗体):

Microsoft目前不推荐并不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为Office可能会出现不稳定的行为和/或在此环境中运行Office时发生死锁。

链接的文章讨论解决方法。

这取决于您是否在64位计算机上,如果您是32位Office或64位办公软件,但是在任何一种情况下都需要进入管理工具>组件服务,在DCOM配置下,您需要找到“Microsoft Word 97 – 2003 Document“,然后将”身份“设置为运行应用程序池的用户。 或者简单地禁用它的安全性。

如果您正在运行带有32位Office的64位服务器,则可能无法找到此DCOM设置。 您将需要从命令提示符运行“MMC -32”以启动32位MMC,然后从“文件>添加/删除管理单元”菜单中添加“组件服务”。

希望这有助于