【问题标题】:How to Set Variables in an SSIS Package?如何在 SSIS 包中设置变量?
【发布时间】:2014-12-24 02:57:04
【问题描述】:

我需要在我的 SSIS 包中使用两个变量,@extract_beg_date@extract_end_date

如何设置它们以某种方式运行?例如,在存储过程中,它看起来像这样:

SET @extract_beg_date = CASE WHEN DATEPART(weekday,GETDATE()) = '2'
                           THEN CAST(CONVERT(VARCHAR(10),GETDATE()-2,101) AS DATETIME)
                           ELSE CAST(CONVERT(VARCHAR(10),GETDATE()-1,101) AS DATETIME)
                        END

SET @extract_end_date = CAST(CONVERT(VARCHAR(10),GETDATE(),101) AS DATETIME)

如何在不使用存储过程的情况下设置 SSIS 包中的变量?我希望能够像这样在 SQL 命令文本中使用它:

SELECT *
FROM dbo.test_tbl
WHERE [TimeStamp] >= @extract_beg_date and [TimeStamp] < @extract_end_date

【问题讨论】:

标签: sql sql-server visual-studio ssis


【解决方案1】:

我会这样做:

  1. 在流​​程上,添加一个执行 SQL 任务。
  2. 打开 Execute SQL Task 并将 ResultSet 属性配置为 Single row,并将 SQLStatement 属性配置为:

    选择 DATEPART(weekday,GETDATE()) = '2' 的情况 然后投射(转换(VARCHAR(10),GETDATE()-2,101)作为日期时间) ELSE CAST(CONVERT(VARCHAR(10),GETDATE()-1,101) AS DATETIME) END AS extract_beg_date, CAST(CONVERT(VARCHAR(10),GETDATE(),101) AS DATETIME) AS extract_end_date

  1. 仍在执行 SQL 任务中,转到结果集视图并添加两个结果输出。将结果名称分别设置为 0 和 1,并为 extract_beg_date 和 extract_end_date 创建 2 个变量。

  1. 在执行期间,执行 SQL 任务将获取 SELECT 查询的输出并将每个值保存到您创建的两个 SSIS 变量中。这些变量可在后续步骤中用于参数化另一个查询。

【讨论】:

  • 创建这两个变量的时候,是把它设为字符串类型还是日期时间类型?
  • 我正在尝试从“设置值”选项卡设置变量值以执行 SSIS 包。有没有办法从这里查看可用的变量。
【解决方案2】:

可以通过转到控制流并从菜单栏中的 SSIS 菜单中选择它来打开“变量”窗格。在这里您可以创建变量并设置它们的类型。

您可以使用控制流中的脚本任务或数据流中的脚本组件来设置变量。为此,请将变量添加到脚本编辑器中的 ReadWriteVariables 列表并按如下方式访问它:

控制流:

Dts.Variables["VariableName"].Value = "hello";

数据流:

Variables.VariableName = "hello";

最后将变量放入 SQL 语句中。我假设您在数据流开始时使用 OLEDB 连接来执行此操作。在 OLE DB 源代码编辑器中,将数据访问模式更改为 SQL 命令,并将问号作为变量的占位符:

SELECT * FROM dbo.test_tbl WHERE [TimeStamp] &gt;= ? and [TimeStamp] &lt; ?

然后单击“参数”按钮并在下拉列表中选择您的变量,将它们分配给参数。

注意变量的范围。如果变量的范围是另一个数据流任务,您在选择时将看不到它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-25
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多