如何在数据流任务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

Source Connection

但是,当我点击参数按钮时,它会抛出错误,Parameters Error

我创建了一个变量,不知道我是否需要一个变量。如何自动化流程以将每年的变量更改为当前年份?谢谢大家。 Variables

答案

尽量避免声明变量,只需将?放在需要传递参数的直接位置即可。

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?

SSIS“数据流任务”平面文件目标中没有记录

在 Windows Server 2008 R2 中安排任务

灵活运用SQL Server2008 SSIS变量

如何使 SSIS 脚本任务失败(使用 C#,2008)

SSIS onerror 事件。执行 SQL 任务就坐在那里