为什么我的SQL Server作业使用SSIS包失败,但是同一个SSIS包在Visual Studio中成功运行?

为什么我的SQL Server作业使用SSIS包失败,但是同一个SSIS包在Visual Studio中成功运行?

问题描述:

我在Visual Studio中使用SSIS Import and Export Wizard创建了一个SSIS包,当我在那里运行它时,它成功运行。基本上,SSIS包在我的SQL Server数据库上运行一个sql查询并将结果导出到Excel文件中。为什么我的SQL Server作业使用SSIS包失败,但是同一个SSIS包在Visual Studio中成功运行?

我都裹那个包到SQL Server的工作和计划​​它在特定时间运行。我注意到,它失败,日志文件显示以下错误消息:

微软(R)的SQL Server执行包实用工具版本12.0.5000.0 64位版权所有(C)微软公司。版权所有。开始日期:下午4:44:00错误:2017-10-12 16:44:00.59代码:0xC0016016源:ExpExcel描述:未能解密受保护的XML节点“DTS:Password”,错误为0x8009000B“密钥无效,用于指定州。”。您可能无权访问此信息。存在加密错误时会发生此错误。验证是否有正确的密钥。结束错误错误:2017-10-12 16:44:00.68代码:0xC0209303来源:ExpExcel连接管理器“DestinationConnectionExcel”描述:请求的OLE DB提供程序Microsoft.Jet.OLEDB.4.0未注册。如果未安装64位驱动程序,请以32位模式运行程序包。错误代码:0x00000000。 OLE DB记录可用。源:“Microsoft OLE DB服务组件”Hresult:0x80040154描述:“类未注册”。结束错误错误:2017-10-12 16:44:00.68代码:0xC00291EC源:删除表SQL任务1执行SQL任务描述:无法获取连接“DestinationConnectionExcel”。连接可能配置不正确,或者您对此连接可能没有正确的权限。结束错误错误:2017-10-12 16:44:00.68代码:0xC0209303来源:ExpExcel连接管理器“DestinationConnectionExcel”描述:请求的OLE DB提供程序Microsoft.Jet.OLEDB.4.0未注册。如果未安装64位驱动程序,请以32位模式运行程序包。错误代码:0x00000000。 OLE DB记录可用。源:“Microsoft OLE DB服务组件”Hresult:0x80040154描述:“类未注册”。结束错误错误:2017-10-12 16:44:00.68代码:0xC00291EC来源:准备工作SQL任务1执行SQL任务描述:无法获取连接“DestinationConnectionExcel”。连接可能配置不正确,或者您对此连接可能没有正确的权限。结束错误DTExec:程序包执行返回DTSER_FAILURE(1)。开始时间:4:44:00 PM完成:4:44:00 PM已用时间:0.219秒。程序包执行失败。该步骤失败,00:00:00,0,0 ,,,, 0

我有一个困难时期试图找出如何调试这些错误,并寻找解决方案。如果我的SSIS包在Visual Studio(与SQL Server安装在同一台机器上)上运行良好,那么为什么它作为SQL Server作业失败?

我还必须添加该机器上未安装Microsoft Office。这可能是原因吗?

+0

这是一个常见的问题上设置的步骤在32位SQL作业代理。该软件包的ProtectionLevel是什么?运行SQL Agent的用户是什么?你连接了什么样的数据库?如果它是SQL Server,你能使用Windows身份验证吗? https://www.mssqltips.com/sqlservertip/2091/securing-your-ssis-packages-using-package-protection-level/ –

+0

运行SQL代理的用户与正在运行的其他SQL作业的用户相同。我正在使用SQL Server身份验证,数据库只是一个SQL Server数据库。 – user3115933

+0

比较软件包上的保护级别。这可能是用户密钥。 –

你需要在你的SQL作业代理程序步骤使32位 - 如果这不工作,你需要安装OLDB ACE驱动程序EXCEL

驱动程序链接:

Microsoft ACE Driver

正如其他人指出出。您的项目保护级别需要与程序包保护级别相同。您可以在包和项目的属性下更改该属性。

如何在一步 enter image description here

+0

感谢您提供解决方案。现在不在办公室,所以我无法检查这些问题。我会尽快查看并报告。 – user3115933

+0

关于如何在SQL作业代理步骤上启用32位的操作,您有任何链接吗? 我遇到过这篇文章,但我不知道这里提到的步骤是否也与SQL Server 2012有关: https://support.microsoft.com/zh-cn/help/934653/how-to-use -the-64-bit-sql-server-agent-to-schedule-a-sql-server-2005 -i – user3115933

+0

好了 - 这里有两个_separate_问题。保护级别和32位超级驱动程序 –

当你创造了它可能得到建立与用户密钥保护级别包。这意味着任何敏感信息(密码)都会使用您的用户密钥进行加密。通过扩展,这意味着只有你可以真正打开/运行包。您最好的选择(我认为最少的努力)是使用密码加密软件包,然后您可以在创建SQL Agent作业时指定该密码。

+0

谢谢。我通过使用密码更改了保护级别,并按照您提及的完全进行。作业仍然失败并获取相同的错误消息。 – user3115933