SSIS DelayValidation随机不起作用(带表达式的Flat File Connection Manager)

时间:2013-07-31 11:07:14

标签: sql-server ssis

您是否曾在SSIS 2008中遇到奇怪的行为,即DelayValidation 在Flatfile连接管理器上随机不起作用?


以下是我在SSIS 2008(Non R2)上讨论的情景:

  • 我的软件包涵盖了将30个不同的* .CSV平面文件导入数据库

  • 每天将CSV文件传送到动态创建的文件夹 (d:\ DataDelivery \ DeliveryID_< GeneratedDeliveryID&GT)
    (例如“D:\ DataDelivery \ DeliveryID_73 \”,“D:\ DataDelivery \ DeliveryID_74 \”,..)
    ==>从此处CSV文件通过SSIS

  • 导入
  • 当前导入的传递ID将由存储过程确定 在SSIS包的开头(存储到SSIS变量“iDeliveryID”)

  • 根据确定的交货ID,我们构建完整的导入路径 使用带有表达式(EvaluateAsExpression = True)的名为“sImportPath”的变量:
    “D:\ DataDelivery \ DeliveryID _”+(DT_WSTR,1252)@ [User :: iDeliveryID] +“\”

...

  • 然后在表达式中使用生成的导入路径 每个Flatfile连接管理器的连接属性,例如:

    • @ [User :: sImportPath] +“fileA.csv”
      (Connection Manager A中连接属性的表达式)
    • @ [User :: sImportPath] +“fileB.csv”
      (Connection Manager B中连接属性的表达式)
    • @ [User :: sImportPath] +“fileC.csv”
      (Connection Manager C中连接属性的表达式)
  • 每个Connection Manager的DelayValidation属性设置为true !!!

  • 因此,对于交付ID 73,Flatfile连接管理器的连接属性
    应该在运行时解决:
        d:\ DataDelivery \ DeliveryID_73 \ fileA.csv
        d:\ DataDelivery \ DeliveryID_73 \ fileB.csv
        d:\ DataDelivery \ DeliveryID_73 \ fileC.csv

但这就是现实中发生的事情:

  • 在Visual Studio中运行时,一切都按预期正常运行
  • 通过SQL Server Agent在生产中运行时,会发生以下情况:
    • 有时包运行正常(导入所有文件)
    • 有时会正确导入fileA 在同一进程中,fileB随消息一起停止 “无法打开数据文件D:\ DataDelivery \ DeliveryID_0 \ fileB.csv”
      (预执行阶段的错误)
      =>你看到这里的送货ID是0 =>显然表达没有解决
    • 有时会正确导入fileB或fileC 在同一进程中,文件A随消息一起停止 “无法打开数据文件D:\ DataDelivery \ DeliveryID_0 \ fileA.csv”
      (预执行阶段的错误) =>因为你看到同样的错误

==>在所有情况下,生成的路径(变量sImportPath)都能正确解析     (我正在记录这个)
==>但似乎DelayValidation是随机工作的一些     连接管理器虽然不能为其他人工作 ==>我还尝试为整个包以及所有包设置DelayValidation = true     单个任务和容器..仍然是相同的行为 你有没有经历过这样的行为?如果是,那么你是如何处理的呢?

非常感谢任何建议 延

0 个答案:

没有答案