【问题标题】:ASP.NET failing to load SSIS package: Value does not fall within the expected rangeASP.NET 无法加载 SSIS 包:值不在预期范围内
【发布时间】:2015-02-21 16:39:26
【问题描述】:

我有一个 ASP.NET 网站,它将引用许多影响 SQL 数据库的 SSIS 包。

这些包中的第一个将清除表中与 ASP NET 会话变量“ID”匹配的所有行。

该站点似乎是从同一个 SQL 数据库中提取的,好吧,它似乎只是 SSIS 包有问题。

当我选择使用以下语法加载包时,我收到以下错误:

    Package deletePkg = app.LoadPackage(deletePackageLocation, null);

值不在预期范围内

我已经四次检查文件路径是否正确。

此特定包的连接管理器在测试连接时似乎很开心,并且使用了网站中其他多次使用的相同配置。尽管在 SSIS 开发环境中工作,但无论出于何种原因,文本和 SQL 日志记录似乎都不起作用。 (ID = ?)

在查看了许多其他讨论之后,很明显这是一个非常模糊的错误消息,可以引用任意数量的问题。我没有找到适合我情况的解决方案。

【问题讨论】:

  • 尝试在包出错时运行分析器跟踪,以查看正在从包传递到数据库的查询。
  • 您是否为 SSIS ExecuteSQL 任务中的参数选择了正确的数据类型?
  • 我的下一个猜测是数据中的 null 值,或者 prod en dev 数据库之间列类型的差异(null/notnull/length)。
  • 能否将日志记录添加到包中并报告 OnError 和 OnWarning 事件?了解包中的哪个组件返回此错误会很有帮助。
  • 是的,我想知道 SSIS 服务帐户是否没有包的权限。包是服务器本地的还是存储在文件共享中的?您可以调试您的应用程序并成功执行包,并且仅在服务器上运行它时才会出现此错误,这似乎指向权限问题。或者 deletePackageLocation 变量的值存在某些东西,即指向服务器上没有包的位置。但你说你已经检查过了。

标签: c# sql asp.net webforms ssis


【解决方案1】:

解决方案是一个意外问题。

deletePackageLocation 是在 Page_load 上设置的类变量。

虽然变量已成功设置在if(!IsPostBack) 子句中,但它在加载包之前已被清除。一旦我在加载包之前立即定义了变量,它就起作用了。

非常不寻常的解决方案,但它是阻止在一天结束时加载包的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    相关资源
    最近更新 更多