如何在数据流任务SSIS 2008 r2中传递变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在数据流任务SSIS 2008 r2中传递变量相关的知识,希望对你有一定的参考价值。
我试图将数据从一个OLEDB连接传输到另一个OLEDB。 SSIS和SQL Server都是2008 R2。我想使用变量来加载每年的数据(2014年,2015年等)。源代码中的SQL查询是,
DECLARE @year int set @year = ?
SELECT [ServiceActivities]
,[ServiceID]
,[ClientID]
,[WorkerID]
,[CostCode]
,[ProviderID]
,[CostUnit]
,[Units]
,[OccurrenceDate]
FROM [dbo].[PlannedAppointmentsView]
WHERE datepart (yy, OccurrenceDate) = @year
答案
尽量避免声明变量,只需将?
放在需要传递参数的直接位置即可。
SELECT [ServiceActivities]
,[ServiceID]
,[ClientID]
,[WorkerID]
,[CostCode]
,[ProviderID]
,[CostUnit]
,[Units]
,[OccurrenceDate]
FROM [dbo].[PlannedAppointmentsView]
WHERE datepart (yy, OccurrenceDate) = ?
如果它仍然无效,那么您必须遵循此错误消息中给出的建议。
只需创建strQuery
类型的变量(例如:String
),转到Properties选项卡,将Evaluate as expression
属性更改为True,并为此变量指定一个类似的表达式:
"SELECT [ServiceActivities]
,[ServiceID]
,[ClientID]
,[WorkerID]
,[CostCode]
,[ProviderID]
,[CostUnit]
,[Units]
,[OccurrenceDate]
FROM [dbo].[PlannedAppointmentsView]
WHERE datepart (yy, OccurrenceDate) = " + (DT_WSTR,50)@[User::year]
之后在OLEDB Source中选择SQL command from variable
选项并选择此变量
另一答案
你应该这样写
declare @Year int = ?
然后按Parameters
按钮并选择所需的参数。然后它会工作。
但正确的做法,就像@Hadi在他的第一条评论中写道。
以上是关于如何在数据流任务SSIS 2008 r2中传递变量的主要内容,如果未能解决你的问题,请参考以下文章
如何将 SQL Server 2008 R2 SSIS 包升级到 SQL Server 2016?