O Estágio 5 Falha em Migrar Registros de Histórico de Contato e Resposta Antes do Ano 2000
Problema ou erro: O Estágio 5 falha em migrar registros de histórico de contato e resposta até 1° de janeiro de 2000 e exibe um erro de restrições de integridade violadas (chave pai não localizada).
Solução: Por padrão, a tabela UA_Calendar contém registros de ID de Data iniciando com 20000101 (correspondente a 1° de janeiro de 2000). Registros de histórico de contato e resposta anteriores ao dia 1° de janeiro de 2000 falham em ser migrados porque seus valores ContactDateTime ou ResponseDateTime fazem referência a IDs que não existem na tabela UA_Calendar.
Para obter uma solução alternativa para este problema, siga estas etapas para preencher a tabela UA_Calendar do sistema de destino com os IDs de datas necessários.
1.
selecione min(ContactDate) em UA_ContactHistory
selecione min(ResponseDate) em UA_ResponseHistory
2.
Preencha a tabela UA_Calendar do sistema de destino com os IDs de data para o intervalo de datas desejado. O exemplo a seguir para o SQL Server insere registros de 1° de janeiro de 1999 a 31 de dezembro de 1999. Substitua os valores em negrito para especificar as datas de início e encerramento, respectivamente.
*
O código de exemplo a seguir é do script ac_populate_tables_sqlsvr.sql no diretório ddl sob a instalação de seu Campaign. Se o seu banco de dados for DB2® Oracle, use o código do script DDL para seu tipo de banco de dados (ac_populate_tables_db2.sql para DB2® ou ac_populate_tables_ora.sql para Oracle).
declare @date_v datetime
set @date_v = '
01/01/1999'
set datefirst 7
set dateformat mdy
while @date_v <= '12/31/1999'
begin
insert into UA_Calendar
(Year, FiscalYear, Quarter, FiscalQuarter,
Month,
WeekOfYear,
WeekOfMonth,
DayOfYear, DayOfMonth, DayOfWeek,
ActualDate,
FirstDayOfWeek,
LastDayOfWeek,
DateID) values
(DATEPART(yyyy, @date_v), DATEPART(yyyy, @date_v), DATEPART(q,
@date_v),DATEPART(q, @date_v),
DATEPART(mm, @date_v),
DATEPART(ww, @date_v),
DATEDIFF(dd, DATEADD(dd,-1,DATEADD(ww, DATEDIFF(ww,0,DATEADD(dd,-
(DAY(@date_v)-1),@date_v)), 0)), @date_v)/7 + 1,
DATEPART(dy, @date_v), DATEPART(dd, @date_v), DATEPART(dw, @date_v),
@date_v,
DATEADD(dd, -1, DATEADD(wk, DATEDIFF(wk,0,@date_v), 0)),
DATEADD(dd, 5, DATEADD(wk, DATEDIFF(wk,0,@date_v), 0)),
CAST (CONVERT (varchar(20), @date_v, 112) AS BIGINT))
set @date_v = DATEADD(dd, 1, @date_v)

end