在 ADO.NET 源代码编辑器中使用动态 Table 名称

Using Dynamic Table name in ADO.NET Source Editor

我有一个 SSIS 数据流任务,我正在尝试使用 ADO.NET 源代码编辑器 从源 table 加载数据 进入 SQL 服务器 table.

问题:

源 table 名称是动态的,取决于当前日期。

Example: If I want to load today's data then the table name would be Sample_03292017_data and if loading tomorrow's data then it would be Sample_03302017_Data.

我做了一些研究,发现了如何将参数传递给 ADO.NET 源代码编辑器 以便在 [=29] 中使用=]where 条件 但我找不到任何有关如何在 table 名称中使用此参数的信息。

有谁知道我怎样才能做到这一点?我的查询非常简单:

select * from Sample_[DateParameter]_Data.

我正在使用 Visual Studio Data Tools 2010。

表达式必须设置在 Data Flow Task 而不是 Ado.net Source

按照以下步骤为 Ado.net Source:

设置表达式
  1. control flow 选项卡中单击 Data Flow Task 并按 F4 以显示属性选项卡
  2. 点击表情按钮,出现如下图

  1. 选择 [Ado.net Source].sqlcommand 属性 然后点击表达式构建器按钮

  1. 编写如下表达式"select * from Sample_ " + @[User::DateParameter] + "_Data" (假设你的数据参数存储在一个名为DateParameter的变量中)

您应该使用动态 SQL 来实现此目的。如果您将 ADO.net 用作 Connection Type,请将以下内容复制并粘贴到您的 SQL 语句中:

Declare @SQL VARCHAR(MAX)
SET @SQL = 'Select * from ' + @TABLE
EXEC(@SQL)

在参数页面中,您需要 Add 新参数,其中 @TABLE 作为 parameter name,并将大小保留为 -1@Table 变量应由变量设置页面中的 expression 决定。