In Stufe 5 schlägt die Migration der Kontakt- und Antwortprotokollsätze aus der Zeit vor dem Jahr 2000 fehl
Problem oder Fehler: In Stufe 5 werden die Kontakt- und Antwortprotokollsätze mit einem Datum vor dem 1. Januar 2000 nicht migriert und folgender Fehler wird angezeigt: Integrity constraints violated (parent key not found) (Verletzte Integritätsbedingungen (übergeordneter Schlüssel nicht gefunden)).
Lösung: Standardmäßig enthält die Tabelle UA_Calendar Datums-ID-Datensätze, die mit 20000101 (entspricht dem 1. Januar 2000) beginnen. Kontakt- und Antwortprotokollsätze, die vor dem 1. Januar 2000 erstellt wurden, können nicht migriert werden, weil die Werte für ContactDateTime oder ResponseDateTime auf Datums-IDs verweisen, die in der Tabelle UA_Calendar nicht enthalten sind.
Dieses Problem können Sie umgehen, wenn Sie folgendermaßen vorgehen, um die Tabelle UA_Calendar des Zielsystems mit den erforderlichen Datums-IDs zu füllen.
1.
Wählen Sie min(ContactDate) aus UA_ContactHistory aus
Wählen Sie min(ResponseDate) aus UA_ResponseHistory aus
2.
Füllen Sie die Tabelle UA_Calendar des Zielsystems mit Datums-IDs für den gewünschten Datumsbereich aus. Im folgenden Beispiel für SQL-Server werden Datensätze für den Zeitraum vom 1. Januar 1999 bis zum 31. Dezember 1999 eingefügt. Ersetzen Sie die Werte in Fettschrift, um das Anfangs- und Enddatum anzugeben.
*
Der folgende Beispielcode stammt aus dem Script ac_populate_tables_sqlsvr.sql im DLL-Verzeichnis der Campaign-Installation. Wenn Sie mit einer DB2®- oder Oracle-Datenbank arbeiten, verwenden Sie den Code aus dem DDL-Script für Ihren Datenbanktyp (ac_populate_tables_db2.sql für DB2® oder ac_populate_tables_ora.sql für 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