我开发了一个非常直接的SSIS包(在VS2005 w / .Net Framework V 2.0.50727 SP2中),它获取用户电子邮件列表,启动for-each循环容器,然后执行脚本任务以检索用户特定数据并通过电子邮件发送给用户。当我在我的开发盒上运行它时,一切都运行良好,并按预期运行。但是,当我将程序包部署到运行的生产服务器(Windows NT 5.2(Build 3790:Service Pack 2)上的Microsoft SQL Server 2005 - 9.00.5000.00(X64)标准版(64位))时,任务失败。
原始错误消息为:
以用户身份执行:xxxxx。 Microsoft(R)SQL Server执行包实用程序版本9.00.5000.00用于64位代码:0x00000009源:PackageName描述:该任务无法在64位环境中执行,因为脚本未预编译。请打开选项以在任务编辑器中预编译脚本。结束错误...错误DTExec:程序包执行返回DTSER_FAILURE(1)。
在广泛研究之后,互联网建议我尝试:
经过更多的研究后,我发现我需要打开"请打开选项,在任务编辑器中预编译脚本。"消息来源:ssis-dtsx DOT blogspot DOT com / 2010/03 /无法执行64位环境 这需要:
然而,当我执行包时,我立即得到错误:
以用户身份执行:xxxx。 ...对于64位代码为0.5000.00:0x00000008源:PackageName描述:该任务配置为预编译脚本,但未找到二进制代码。请单击“设计脚本”按钮,在“脚本任务编辑器”中访问IDE,以生成二进制代码。结束错误代码:0x00000008来源:获取PO信息和电子邮件说明:无法重新编译或运行脚本:使用CLSID检索组件的COM类工厂...
所以我的最后一步是在SSIS pkg中将DelayValidation属性从False变为True,进入设计脚本以使其重建,然后重新部署,然后重新运行,我仍然会收到相同的错误。
在搜索错误时,我被定向到Microsoft HOT FIX,这表示我下载了另一个修补程序。
我还没有下载此修补程序,如果我可以避免它,我不愿意(我们的OP团队不喜欢在生产服务器上运行修补程序)。
答案 0 :(得分:1)
转到包,打开脚本组件,然后在Visual Studio中(查看代码时)单击BUILD。如果没有阻止编译的问题,这将编译包。然后保存,返回并确保单击“OKAY”而不是“取消”,如果单击取消,则整个事情将恢复。