2012-07-23 105 views
5

我遇到了一个SSIS工作问题,我最近创建了一个奇怪的错误。奇怪的SSIS错误(进程退出代码255)

背景信息

这是(.dtsx程序)正在被使用SQL作业(SQL Server 2008中,工作与创建SSMS)运行使用SSIS包的类型SQL Server Integration Services包,你会期望。这项工作在我们的开发环境中运行良好,但不在我们的测试环境中运行。该包使用配置文件(.dtsConfig)来维护不同环境的连接字符串。这个软件包实际上做的很简单,它会截断一些登台表,然后使用顺序容器中的8个数据流任务从Oracle数据库中提取数据,然后用每个任务分解为源(Oracle) - >数据转换(用于unicode字符串) - >目标( SQL Server)。由于需要建立Oracle连接,因此该程序包包含该连接的用户/密码,因此具有保护级别为'EncryptSensitiveWithPassword'的密码。正在运行此作业的服务器正在运行Windows Server 2008 R2 SP1。我相信这只是背景信息,但如果我错过了任何让我知道的事情。

实际的错误

这是在破碎作业的作业历史唯一有用的信息:

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

正如你所看到的,不是很有帮助。真正的启发是,当我在服务器上使用DTEXEC手动执行此作业时,它运行良好。这使我相信它可能可能是sqlagentadmin或某事的权限问题,但我看到的一切似乎很好。我检查了使用procexplorer发生了什么,它正在运行正确的DTEXEC命令。应用程序事件查看器不会弹出这个虽然(所以也许它的一个Oracle驱动程序的问题):

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 

我环顾四周互联网几个小时,我已经尝试了一些东西。我在所有数据流任务上将Delay Validation属性更改为“True”。我已经尝试使用集成的SSIS GUI设置作业,并使用操作系统选项来运行dtexec,但都失败。

有什么建议吗?对不起墙上的文字,但我只是想确保我覆盖了一切。

谢谢!

+1

它看起来像您运行的Oracle驱动程序运行不正常。错误输出的第二行告诉错误在OraClient11.Dll中。你能尝试在另一台机器上运行吗? – rvphx 2012-07-23 20:05:48

+0

我假设你没有打开日志记录? – billinkc 2012-07-23 20:14:02

+0

在测试中运行软件包的帐户与SQL代理帐户相同,还是您有代理?在你的开发环境中,它的设置是否和你所说的一样? – billinkc 2012-07-23 20:18:34

回答

0

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

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

1

我得到以下错误:'该步骤没有生成任何输出。返回值是未知的。进程退出代码是255.该步骤失败。' 为了解决我的问题,我检查了读取源数据的权限。我没有正确的权限。获得了正确的权限并重新开始解决问题。我可以建议SSIS作为正在执行的任务和我的DB2数据源提供程序之间的API应该为错误提供更好的信息: - ) 通过读取特权数据来解决问题。