如何在数据流任务SSIS 2008 r2中传递变量
How to pass variables in data flow task SSIS 2008 r2
我正在尝试将数据从一个 OLEDB 连接传输到另一个 OLEDB。 SSIS 和 SQL 服务器均为 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) = ?
如果仍然无法正常工作,那么您必须按照此错误消息中给您的建议进行操作。
只需创建一个 String
类型的变量(例如:strQuery
),转到“属性”选项卡,将 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 select SQL command from variable
选项中选择这个变量
你应该这样写
declare @Year int = ?
然后按 Parameters
按钮和 select 您想要的参数。然后就可以了
但是正确的做法就像@Hadi 在他的第一条评论中写的那样。
我正在尝试将数据从一个 OLEDB 连接传输到另一个 OLEDB。 SSIS 和 SQL 服务器均为 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) = ?
如果仍然无法正常工作,那么您必须按照此错误消息中给您的建议进行操作。
只需创建一个 String
类型的变量(例如:strQuery
),转到“属性”选项卡,将 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 select SQL command from variable
选项中选择这个变量
你应该这样写
declare @Year int = ?
然后按 Parameters
按钮和 select 您想要的参数。然后就可以了
但是正确的做法就像@Hadi 在他的第一条评论中写的那样。