Мне нужно загрузить данные из SQL Server 2012 в SQL Server 20108 R2. У меня есть столбец с типом данных date
, а в целевой таблице у меня есть тип данных 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
Пожалуйста, найдите запрашиваемую информацию
Источник - дата, а назначение - тип данных datetime\
И Sql Server 2012, и Sql Server 2008 R2 подошли к концу. Это означает, что они больше не получают никаких исправлений... даже для критических проблем с безопасностью. Опасно и безответственно продолжать использовать эти старые версии. Модернизация — это работа №1.
@JoelCoehoorn 2012 еще не EoL, это в 2022 году; на данный момент он находится в расширенной поддержке. Однако 2008 год стал хитом EoL больше года назад. 2012 до сих пор получает обновления безопасности, на самом деле оно было получено в феврале этого года. KB4532098
я понимаю, что нет поддержки, но мне нужно решить эту проблему, если это возможно
Опять же, опубликуйте определения таблиц как для источника, так и для цели, а также скриншот потока данных. Если вашу проблему невозможно воспроизвести, мы не сможем помочь вам ее исправить. Прочтите статью Справочного центра о Как спросить, чтобы улучшить свой вопрос и противостоять отрицательным голосам.
ребята, спасибо за отзыв, я решаю эту проблему сам. Чтобы загрузить данные с даты на дату и время с сервера sql 2012 на 2008r2, я использовал два пакета ssis. В одном пакете ssis я преобразовал дату в тип данных datetime (n) для значения столбца, а в следующем пакете ssis скопировал значение столбца из загруженного место изначально до места назначения . Это приводит к тому, что в месте назначения используется тот же тип данных, но при этом загружаются данные из значения столбца типа даты в дату и время.
На первый взгляд, это кажется маловероятным. Механизм потока данных служб SSIS строго типизирован. Если исходным столбцом является дата и время, а целевым также является дата и время, и это SQL Server для SQL Server, не должно происходить никакого преобразования. Опубликуйте определения таблиц как для источника, так и для цели, а также фактическое сообщение об ошибке и, желательно, снимок экрана с потоком данных, и этого должно быть достаточно, чтобы дать ответ или задать более острый вопрос.