奇怪的 SSIS 错误(进程退出代码 255)
Posted
技术标签:
【中文标题】奇怪的 SSIS 错误(进程退出代码 255)【英文标题】:Weird SSIS Error (Process Exit Code 255) 【发布时间】:2012-07-23 19:57:30 【问题描述】:我最近创建的一个 SSIS 作业遇到了一个问题,该作业因一个奇怪的错误而中断。
背景信息
这是一个 SSIS 包 (.dtsx),它与 SQL 作业(SQL Server 2008,使用 SSMS 创建的作业)一起运行,使用 SQL Server Integration Services 包类型,正如您所期望的那样。这项工作在我们的开发环境中运行良好,但在我们的测试环境中却不行。该包使用配置文件 (.dtsConfig) 来维护不同环境的连接字符串。这个包实际上在做什么很简单;它截断一些临时表,然后使用序列容器中的 8 个数据流任务从 Oracle 数据库中提取数据填充,每个任务分解为 Source (Oracle) -> Data Conversion (for unicode strings) -> Destination ( SQL 服务器)。由于需要建立 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
我在互联网上浏览了几个小时,并尝试了一些方法。我将所有数据流任务的延迟验证属性更改为“真”。我尝试使用集成的 SSIS GUI 设置作业,并使用操作系统选项来运行 dtexec,但都失败了。
有什么建议吗?对不起,文字墙,但我只是想确保我涵盖了所有内容。
谢谢!
【问题讨论】:
您正在运行的 Oracle 驱动程序似乎无法正常运行。错误输出的最后第二行表明错误在 OraClient11.Dll 中。您可以尝试在另一台机器上运行它吗? 我假设您没有打开包日志记录? test中运行包的账号,和SQL代理账号一样还是有代理?在您的开发环境中,它的设置是否如您所知? 大家好,感谢您的 cmets。正如所指出的,问题出在 Oracle 驱动程序中。我们最近重新安装了该驱动程序,结果发现 sqlagentadmin 引用了旧驱动程序,而 windows 引用了正确的驱动程序(因此手动工作但不工作)。现在一切就绪,再次感谢! 您能否将最终评论提升为答案并将问题标记为已回答? 【参考方案1】:我收到以下错误:'该步骤未生成任何输出。返回值未知。进程退出代码为 255。该步骤失败。 ' 为了解决我的问题,我检查了读取源数据的权限。我没有正确的特权。获得了正确的权限并重新开始我的工作解决了这个问题。我可以建议 SSIS 之间的 API 作为执行任务,在我的情况下,DB2 数据源提供者应该用更好的信息来分配错误:-) 通过获得对源数据的读取权限来解决问题。
【讨论】:
【参考方案2】:您的服务器是 64 位服务器吗? Oracle 服务器呢?在使用 SSIS 连接到 Oracle 服务器时,我们遇到了非常相似的问题。我们必须在 64 位服务器上安装 64 位和 32 位客户端工具。
此外,您可能必须在 SQL 代理作业中设置一个标志,告诉它不要使用 64 位。查看 Step 的属性。转到“配置”选项卡,然后单击“高级”选项卡(在 SQL 2008 中可能略有不同)并选中“32 位运行时”,然后再试一次。这可能是它在调试时工作但不能作为工作工作的原因。
【讨论】:
【参考方案3】:当我授予对包含控制台程序的文件夹的访问权限(对所有服务器用户的访问权限)时,它运行顺利。
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于奇怪的 SSIS 错误(进程退出代码 255)的主要内容,如果未能解决你的问题,请参考以下文章
SSIS 错误:尝试向数据流任务缓冲区添加行失败,错误代码为 0xC0047020
什么时候最好在看门狗线程中导致段错误而不是正常退出以停止进程?