7

我最近创建的 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,但都失败了。

有什么建议么?对不起,文字墙,但我只是想确保我涵盖了所有内容。

谢谢!

4

3 回答 3

2

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

于 2015-01-10T13:24:11.893 回答
0

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

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

于 2013-10-04T21:06:35.360 回答
-1

当我访问包含控制台程序的文件夹(访问所有服务器用户)时,它运行顺利。

于 2022-02-20T06:51:21.320 回答