我有一个SSIS包,它使用了一个围绕RightFax的COM API(rfcomapi.dll)的COM Interop(Interop.RFCOMAPILib.dll)。
Interop程序集已经过GAC,因此我们可以在SSIS包中使用它
该程序包在我的本地计算机上运行正常。但是如果手动启动它也可以在服务器上正常工作(意味着服务器上的所有配置都是正确的)
(来源:codinghorror.com)
但是当我们将软件包放在预定的作业上(在我们能够手动运行它的同一台服务器上)并让作业启动软件包时,它会在下一行中失败。
Dim faxServer As New FaxServerClass()
并出现以下错误
Error: 2009-07-16 15:32:01.39
Code: 0x00000002
Source: Send PO Notification Faxes and Mark as Processed
Description: The script threw an exception: Object reference not set to an instance of an object.
End Error
这一行是整个包中第一次尝试从COM Interop程序集中实例化一个类。
会发生什么事?线程问题还是什么?
事实证明,COM Interop程序集在64位运行时出现了问题(服务器已启动)我们将其切换到32位并运行正常。
试试这篇支持文章中的Method 3。
将SSIS Package ProtectionLevel属性更改为EncryptSensitiveWithPassword。此设置使用密码进行加密。然后,您可以修改SQL Server代理作业步骤命令行以包含此密码。