2

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

查看此站点上的其他帖子很容易varchar(max)进入对象变量。但是接下来该怎么办?有没有办法让执行 Sql 任务(变量的 SQLSourceType)指定对象变量而不是字符串变量?

有没有可行的方法?

4

1 回答 1

3

以下是我可能会采用的方法:

  1. 将数据流任务添加到您的控制流
    • 添加连接到数据库的源 (ADO.NET)
    • 创建一个包级对象变量(用于下一步)
    • 添加将数据填充到上一步中创建的 Object 变量中的 Recordset 目标
  2. 回到控制流:
    • 为“当前”查询创建一个包级字符串变量(参见下一步)
    • 添加 For Each ADO.NET 枚举器
      • 将上一个数据流任务连接到 For Each 任务
      • 将 For Each 配置为使用 Object 变量作为源,并将列索引与 SQL 一起存储到 String 变量中
    • 在 For Each 任务中添加一个执行 SQL 任务
      • 将其配置为从变量执行 SQL 命令,并选择包含当前查询的字符串变量

基本上它会从表中收集查询,然后对于每个收集的查询,将其分配给一个变量,然后执行 SQL 命令可以从该变量中提取命令文本。

于 2012-08-13T23:36:24.747 回答