如何使用SQL任务更新表

时间:2015-07-08 02:39:13

标签: sql sql-server ssis-2008 sqlcommandbuilder

我有这个SQL来更新我表中的修改记录。它在SSMS中运行,但我如何在SSIS包中实现它?我尝试使用SQL任务,但它无法识别列。

我可以在数据流中选择一个ole db source(sql命令有select语句),派生列为我的导入日期,然后ole db destination更新记录 - 但是要更新的sql命令的语法是什么?

update nss.MKT_CUSTOM
set 
      [INSURED_NUMBER] = stg_MKT_CUSTOM.[INSURED_NUMBER]
      ,[SALES_AGENCY_NUMBER] = stg_MKT_CUSTOM.[SALES_AGENCY_NUMBER]
      ,[PRODUCT_CODE] = stg_MKT_CUSTOM.[PRODUCT_CODE]
      ,[INS_MKT_INFO_SRC_CREATE_DATE] = stg_MKT_CUSTOM.[INS_MKT_INFO_SRC_CREATE_DATE]
      ,[INS_MKT_INFO_SRC_CREATE_USER] = stg_MKT_CUSTOM.[INS_MKT_INFO_SRC_CREATE_USER]
      ,[MKT_INFO_SRC_CODE] = stg_MKT_CUSTOM.[MKT_INFO_SRC_CODE]
      ,[MKT_INFO_SRC_DESC_EN] = stg_MKT_CUSTOM.[MKT_INFO_SRC_DESC_EN]
      ,[MKT_INFO_SRC_DESC_FR] = stg_MKT_CUSTOM.[MKT_INFO_SRC_DESC_FR]
      ,[MKT_INFO_SRC_START_DATE] = stg_MKT_CUSTOM.[MKT_INFO_SRC_START_DATE]
      ,[MKT_INFO_SRC_END_DATE] = stg_MKT_CUSTOM.[MKT_INFO_SRC_END_DATE]
      ,[MKT_INFO_SRC_CREATE_DATE] = stg_MKT_CUSTOM.[MKT_INFO_SRC_CREATE_DATE]
      ,[MKT_INFO_SRC_MOD_DATE] = stg_MKT_CUSTOM.[MKT_INFO_SRC_MOD_DATE]
      ,[MKT_INFO_SRC_CLIENT_CODE] = stg_MKT_CUSTOM.[MKT_INFO_SRC_CLIENT_CODE]
      ,[MKT_INFO_SRC_CAT_CODE] = stg_MKT_CUSTOM.[MKT_INFO_SRC_CAT_CODE]
      ,[MKT_INFO_SRC_CAT_DESC_EN] = stg_MKT_CUSTOM.[MKT_INFO_SRC_CAT_DESC_EN]
      ,[MKT_INFO_SRC_CAT_DESC_FR] = stg_MKT_CUSTOM.[MKT_INFO_SRC_CAT_DESC_FR]
      ,[MKT_INFO_SRC_CAT_CREATE_DATE] = stg_MKT_CUSTOM.[MKT_INFO_SRC_CAT_CREATE_DATE]
      ,[MKT_INFO_SRC_CAT_MOD_DATE] = stg_MKT_CUSTOM.[MKT_INFO_SRC_CAT_MOD_DATE]
      ,[IMPORT_DATE] = GETDATE()
from 
    nss.stg_MKT_CUSTOM
inner join
    MKT_CUSTOM on (stg_MKT_CUSTOM.INS_MKT_INFO_SRC_ID = MKT_CUSTOM.INS_MKT_INFO_SRC_ID)
where 
    (stg_MKT_CUSTOM.MKT_INFO_SRC_MOD_DATE <> MKT_CUSTOM.MKT_INFO_SRC_MOD_DATE 
     or stg_MKT_CUSTOM.MKT_INFO_SRC_CAT_MOD_DATE <> MKT_CUSTOM.MKT_INFO_SRC_CAT_MOD_DATE)

2 个答案:

答案 0 :(得分:0)

如果需要在数据流任务中执行更新操作,则需要使用OLE DB命令组件。

但是由于我在语句中看不到任何参数/变量,您可以尝试在控制流面板中使用Execute Sql Task。

答案 1 :(得分:0)

我在这种情况下尝试将您的更新放入新的sql过程中, 并且在执行sql-task时我尝试执行它。