假设我有以下情况
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]' "
答案 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 Name
通常是这些字段中最不直观的。这是Input
参数的基于1的id序列。如果您要使用另一个输入变量,则其Parameter Name
将是2
。