Etape 5 échec de la migration des enregistrements d'historique des contacts et des réponses antérieurs à l'an 2000
Problème ou erreur : l'étape 5 ne parvient pas à migrer les enregistrements d'historique des contacts et des réponses antérieurs au 1er janvier 2000 et affiche l'erreur integrity constraints violated (parent key not found).
Solution : les enregistrements DateID contenus dans la table UA_Calendar commencent par défaut à l'enregistrement 20000101 (1er janvier 2000). Les enregistrements d'historique des contacts et des réponses antérieurs au 1er janvier 2000 ne sont pas migrés car les valeurs ContactDateTime ou ResponseDateTime qui leur sont associées font référence à des ID de date qui n'existent pas dans la table UA_Calendar.
Pour résoudre ce problème, suivez la procédure ci-dessous, qui permet d'ajouter l'ID de date requis à la table UA_Calendar du système cible.
1.
select min(ContactDate) from UA_ContactHistory
select min(ResponseDate) from UA_ResponseHistory
2.
Remplir à la table UA_Calendar du système cible les ID de date correspondant aux plages de dates souhaitées. L'exemple SQL Server suivant permet d'insérer les enregistrements créés entre le 1er janvier et le 31 décembre 1999. Remplacez les valeurs en gras par les dates de début et de fin.
*
L'exemple de code suivant provient du script ac_populate_tables_sqlsvr.sql se trouvant dans le répertoire ddl de votre installation de Campaign. Si vous utilisez une base de données DB2® ou Oracle, utilisez le code du script DDL correspondant (ac_populate_tables_db2.sql pour DB2® ou ac_populate_tables_ora.sql pour 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