C# SSIS包失败,因为;脚本任务失败,因为脚本未预编译";

C# SSIS包失败,因为;脚本任务失败,因为脚本未预编译";,c#,sql-server,windows,ssis,visual-studio-2005,C#,Sql Server,Windows,Ssis,Visual Studio 2005,我开发了一个非常简单的SSIS包(在VS2005 w/.Net Framework V 2.0.50727 SP2中),它获取要发送电子邮件的用户列表,启动for each循环容器,然后执行一个脚本任务来检索特定于用户的数据并通过电子邮件发送给用户。当我在我的dev box上运行它时,一切都很好,运行正常。但是,当我将包部署到运行Windows NT 5.2(Build 3790:Service Pack 2)上的Microsoft SQL server 2005-9.00.5000.00(X6

我开发了一个非常简单的SSIS包(在VS2005 w/.Net Framework V 2.0.50727 SP2中),它获取要发送电子邮件的用户列表,启动for each循环容器,然后执行一个脚本任务来检索特定于用户的数据并通过电子邮件发送给用户。当我在我的dev box上运行它时,一切都很好,运行正常。但是,当我将包部署到运行Windows NT 5.2(Build 3790:Service Pack 2)上的Microsoft SQL server 2005-9.00.5000.00(X64)标准版(64位)的生产服务器时,任务失败

原始错误消息为:

以用户身份执行:xxxxx。Microsoft(R)SQL Server针对64位代码执行包实用程序版本9.00.5000.00:0x00000009源代码:PackageName说明:由于未预编译脚本,因此无法在64位环境中执行任务。请在任务编辑器中启用预编译脚本的选项。结束错误。。。错误DTExec:包执行返回DTSER_失败(1)

经过广泛研究,互联网站建议我尝试:

  • 通过更改SQL作业中的execution属性以及将我的RunIn64BitMode属性从true更改为false,以32位运行包
    • 失败,因为“选项”/X86”无效。“
  • 安装
    • 这不适用,因为我已经在SP2上运行了
  • 因此,经过进一步研究,我发现我需要打开“请打开在任务编辑器中预编译脚本的选项”。来源:ssis dtsx.blogspot.com/2010/03/cannot-execute-in-64-bit-environment.html 其中包括:

    • 确保每个脚本任务的PreCompile=True
    • 打开脚本任务编辑器,切换到脚本选项卡,并确保 PrecompileScriptIntoBinaryCode=True
    • 单击设计脚本打开代码编辑器(Visual Studio for Applications),然后使用文件>关闭并返回选择它(VSA将重新编译二进制代码并将其存储在包中)
    • 生成项目并复制到目标位置
    但是,当我执行包时,我立即得到错误:

    以用户身份执行:xxxx。。。0.5000.00(适用于64位代码):0x00000008源代码:PackageName说明:任务配置为预编译脚本,但未找到二进制代码。请在脚本任务编辑器中访问IDE,方法是单击“设计脚本”按钮以生成二进制代码。结束错误代码:0x00000008源:获取PO信息和电子邮件描述:无法重新编译或运行脚本:正在检索具有CLSID的组件的COM类工厂

    因此,我的最后一步是在SSIS pkg中将DelayValidation属性从False改为True,进入设计脚本以使其重建,然后重新部署,然后重新运行,但仍然会出现相同的错误

    在搜索错误时,我被指向建议我下载另一个修补程序的错误


    我还没有下载修补程序,如果可以避免的话,我不想下载(我们的OPs团队不喜欢在生产服务器上运行修补程序)。

    转到软件包,打开脚本组件,然后在Visual Studio中(查看代码时)单击BUILD。如果没有问题阻止它编译,这将编译包。然后保存,返回并确保单击“确定”而不是“取消”,如果单击“取消”,则整个过程将恢复。

    转到软件包,打开脚本组件,然后在Visual Studio中(查看代码时)单击“构建”。如果没有问题阻止它编译,这将编译包。然后保存,返回并确保您单击“确定”而不是“取消”,如果您单击“取消”,则整个过程将恢复