Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 奇怪的SSIS错误(进程退出代码255)_Sql_Sql Server_Sql Server 2008_Ssis - Fatal编程技术网

Sql 奇怪的SSIS错误(进程退出代码255)

Sql 奇怪的SSIS错误(进程退出代码255),sql,sql-server,sql-server-2008,ssis,Sql,Sql Server,Sql Server 2008,Ssis,我最近创建的SSIS作业有一个问题,该作业因一个奇怪的错误而中断 背景信息 这是一个SSIS包(.dtsx),它与SQL作业(SQL Server 2008,使用SSMS创建的作业)一起运行,并使用您预期的SQL Server Integration Services包类型。这项工作在我们的开发环境中运行良好,但在我们的测试环境中运行不好。该包使用配置文件(.dtsConfig)来维护不同环境的连接字符串。软件包实际上做的事情非常简单;它截断一些暂存表,然后使用序列容器中的8个数据流任务填充从O

我最近创建的SSIS作业有一个问题,该作业因一个奇怪的错误而中断

背景信息

这是一个SSIS包(.dtsx),它与SQL作业(SQL Server 2008,使用SSMS创建的作业)一起运行,并使用您预期的SQL Server Integration Services包类型。这项工作在我们的开发环境中运行良好,但在我们的测试环境中运行不好。该包使用配置文件(.dtsConfig)来维护不同环境的连接字符串。软件包实际上做的事情非常简单;它截断一些暂存表,然后使用序列容器中的8个数据流任务填充从Oracle数据库提取的数据,每个任务分解为源(Oracle)->数据转换(对于unicode字符串)->目标(SQL Server)。由于需要建立Oracle连接,包中包含该连接的用户/密码,因此具有“EncryptSensitiveWithPassword”的保护级别来维护该连接。正在运行此作业的服务器正在运行Windows server 2008 R2 SP1。我相信就背景信息而言就是这样,但如果我遗漏了什么,请告诉我

实际错误

这是断开作业的作业历史记录中唯一有用的消息:

该步骤没有生成任何输出。返回值未知。 进程退出代码为255。步骤失败了

正如你所看到的,这不是很有帮助。真正重要的是,当我在服务器上使用DTEXEC手动运行此作业时,它运行良好。这让我相信这可能是sqlagentadmin或其他方面的权限问题,但我看到的一切似乎都很好。我使用procexplorer检查了正在发生的事情,它正在运行正确的DTEXEC命令。应用程序事件查看器会弹出这样的窗口(因此可能是oracle驱动程序的问题):

我在网上浏览了好几个小时,尝试了一些东西。我将所有数据流任务的延迟验证属性更改为“True”。我尝试使用集成的SSIS GUI设置作业,并使用操作系统选项仅运行dtexec,但都失败了

有什么建议吗?很抱歉,这墙的文字,但我只是想确保我涵盖了一切


谢谢

您的服务器是64位服务器吗?Oracle服务器呢?在使用SSI连接到Oracle服务器时,我们遇到了非常类似的问题。我们必须在64位服务器上安装64位和32位客户端工具


此外,您可能必须在SQL代理作业中设置一个标志,以告诉它不要使用64位。查看步骤的属性。转到“配置”选项卡,然后单击“高级”选项卡(在SQL 2008中可能有点不同),勾选“32位运行时”,然后重试。这可能就是为什么它在调试时可以工作,但不能作为作业工作。

我得到了以下错误:“该步骤没有生成任何输出。返回值未知。进程退出代码为255。这一步失败了。” 为了解决我的问题,我检查了读取源数据的权限。我没有适当的特权。获得正确的权限并重新启动我的作业解决了问题。我可以建议SSI之间的API作为执行任务,在我的例子中,DB2数据源提供程序应该使用更好的信息分配fault:-)
通过获得对源数据的读取权限,问题得以解决。

您正在运行的Oracle驱动程序似乎运行不正常。错误输出的最后第二行表明错误在OraClient11.Dll中。您可以尝试在另一台计算机上运行它吗?我假设您没有打开包日志记录?在测试中运行包的帐户与SQL代理帐户相同,还是您有代理?在您的开发环境中,它的设置是否与您所知道的一样好?大家好,谢谢大家的评论。正如前面指出的,问题出在oracle驱动程序中。我们最近重新安装了该驱动程序,结果发现sqlagentadmin引用的是一个旧的驱动程序,而windows引用的是正确的驱动程序(因此手动工作,但不处理作业)。一切都安排好了,再次感谢!你能把最后的评论提升成一个答案,并把问题标记为已回答吗?
Faulting application name: DTExec.exe, version: 2007.100.5500.0, time stamp: 0x4e7b1ed6
Faulting module name: OraClient11.Dll, version: 11.2.0.1, time stamp: 0x4bb1dcae
Exception code: 0xc0000005
Fault offset: 0x0000000000057106
Faulting process id: 0x2d94
Faulting application start time: 0x01cd66b0d360164d
Faulting application path: C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe
Faulting module path: c:\app\product\11.2.0\client_1\bin\OraClient11.Dll
Report Id: 118a2173-d2a4-11e1-b1ec-001517955142