从SSIS包中,我应该如何以varchar(max)的形式执行存储在表中的sql脚本?

时间:2012-08-13 23:15:18

标签: sql ssis

我将大型(varchar(max))SQL脚本存储在表中。我想在SSIS包中执行脚本。

查看此站点上的其他帖子,将varchar(max)放入对象变量很容易。但那该怎么办?有没有办法让Execute Sql Task(变量的SQLSourceType)指定一个Object变量而不是一个String变量?

有没有办法可行?

1 个答案:

答案 0 :(得分:3)

以下是我如何处理它:

  1. 向控制流添加数据流任务
    • 添加连接到数据库的源(ADO.NET)
    • 创建包级别对象变量(用于下一步)
    • 添加一个Recordset目标,将您的数据填充到上一步创建的Object变量
  2. 回到控制流程:
    • 为“当前”查询创建包级别字符串变量(请参阅下一步)
    • 添加For Each ADO.NET枚举器
      • 将先前的数据流任务连接到For Each任务
      • 将For Each配置为使用Object变量作为源,并将带有SQL的列索引存储到String变量中
    • 在For Each任务中添加执行SQL任务
      • 将其配置为从Variable执行SQL命令,并选择包含当前查询的字符串变量
  3. 基本上它会从表中收集查询,然后对于每个收集的查询,将其分配给变量,然后执行SQL命令可以从该变量中提取命令文本。