SSIS在查询名称中使用变量

时间:2018-12-03 19:01:46

标签: ssis

假设我有以下情况

Select
      age
     ,address
     ,full_name
from
     [dbo].customers

我想用一个ssis变量替换[dbo]部分,因此当我们运行此程序包并需要替换架构时,这简直是小菜一碟。

到目前为止,我一直在尝试创建一个名为schema_var_name的SQL变量,并将其附加到最前面,但这对我来说不起作用。

你能告诉我我在做什么错吗?

这是我所拥有的:

"Select
      age
     ,address
     ,full_name
from
     '@[User::schema_var_name]' + '.[customers]' "

2 个答案:

答案 0 :(得分:1)

您将需要在SQL文本中连接@[User::schema_var_name]变量,并用双引号(")括住查询的其他部分。下面是您的SQL命令表达式的示例。然后,可以将其用作为执行SQL任务或数据流任务中的源组件中的源语句设置的变量的表达式。

"Select age, address, full_name from " +  @[User::schema_var_name] + ".[customers]"

答案 1 :(得分:1)

您还可以构建动态sql语句并在Execute SQL Task中执行它。 ?告诉任务您要在该位置使用变量。然后,您在Parameter Mapping下设置变量。您的查询将如下所示:

DECLARE @schemaName NVARCHAR(100) = ?
DECLARE @sqlQuery NVARCHAR(MAX) = N'
SELECT
      age
     ,address
     ,full_name
FROM
     [' + @schemaName + '].customers'

EXEC(@sqlQuery)

编辑:

这是参数映射的样子: Parameter_mapping

Parameter Name通常是这些字段中最不直观的。这是Input参数的基于1的id序列。如果您要使用另一个输入变量,则其Parameter Name将是2