SQL Server 2012 到 2008 R2 的 LoadData 问题,日期日期类型加载到日期时间数据类型列

LoadData from SQL Server 2012 to 2008 R2 issue with date date type loading into datetime datatype column

我必须将数据从 SQL Server 2012 加载到 SQL Server 20108 R2。我有一个数据类型为 date 的列,在目标 table 中我的数据类型为 datetime。当我尝试使用 SSIS 加载数据时,我收到一条错误消息,提示日期格式无效,有时我的对话失败。

Source : 


CREATE TABLE SourceTable(
    [SSNO] [char](9) NOT NULL,
    [SH_CHANGE_DATE] [date] NULL,
    [SH_REASON_CODE] [char](2) NOT NULL,
    [SH_ANN_SALARY] [decimal](8, 2) NOT NULL,
    [GRADE] [char](2) NOT NULL,
    [ITEM] [char](4) NOT NULL,
    [MULTI_POSITNBR] [char](4) NOT NULL,
    [STEP] [char](2) NOT NULL,
    [OFF_STEP] [char](1) NOT NULL,
    [SH_TITLE_NAME] [char](30) NOT NULL,
    [SH_CHANGE_AMT] [decimal](7, 2) NOT NULL,
    [SH_DIV_DIST_IND] [char](4) NOT NULL,
    [SH_BUDGET] [char](3) NOT NULL,
    [SH_ENGNO] [char](2) NOT NULL,
    [SH_RCDADD_DATE] [date] NULL,
    [SH_RCDADD_TIME] [time](0) NULL,
    [SH_OCC_CATEGORY] [char](1) NOT NULL,
    [SH_FULL_PART_CD] [char](1) NOT NULL,
    [SH_SUPVY_CLASS] [char](1) NOT NULL,
    [EMPLOYEE_NUMBER] [char](9) NOT NULL,
    [T101_TSAL_HIST_PRIMARY_KEY]  AS ((substring([SSNO],(1),(9))+substring(CONVERT([varchar],[SH_CHANGE_DATE],(112)),(1),(8)))+substring([SH_REASON_CODE],(1),(2))) PERSISTED NOT NULL,
 CONSTRAINT SourceTableconstrain PRIMARY KEY CLUSTERED 
(
    [Source_PRIMARY_KEY] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

DESTINATION : 


CREATE TABLE TableName(
    [SSNO] [char](9) NOT NULL,
    [SH_CHANGE_DATE] [datetime] NOT NULL,
    [SH_REASON_CODE] [char](2) NOT NULL,
    [SH_ANN_SALARY] [money] NULL,
    [GRADE] [char](2) NULL,
    [ITEM] [char](4) NULL,
    [MULTI_POSITNBR] [char](4) NULL,
    [STEP] [char](2) NULL,
    [OFF_STEP] [char](1) NULL,
    [SH_TITLE_NAME] [varchar](30) NULL,
    [SH_CHANGE_AMT] [money] NULL,
    [SH_DIV_DIST_IND] [char](4) NULL,
    [SH_BUDGET] [char](3) NULL,
    [SH_ENGNO] [char](2) NULL,
    [SH_RCDADD_DATE] [datetime] NULL,
    [SH_RCDADD_TIME] [varchar](6) NULL,
    [SH_OCC_CATEGORY] [char](1) NULL,
    [SH_FULL_PART_CD] [char](1) NULL,
    [SH_SUPVY_CLASS] [char](1) NULL,
    [EMPLOYEE_NUMBER] [char](9) NULL,
 CONSTRAINT Tablename PRIMARY KEY CLUSTERED 
(
    [SSNO] ASC,
    [SH_CHANGE_DATE] ASC,
    [SH_REASON_CODE] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

谢谢大家的反馈,我自己解决了这个问题。要从 sql 服务器 2012 到 2008r2 从日期到日期时间加载数据,我使用了两个 ssis 包,在一个 ssis 包中,我已将列值的日期转换为 datetime(n) 数据类型,并在下一个 ssis pakcage 中复制了从最初加载的地方到目的地的列值。这导致在目标处具有相同的数据类型,但仍加载从日期到日期时间数据类型列值的数据。