스테이지 5에서 컨택 및 응답 기록 레코드를 2000 연도 전으로 마이그레이션하는 데 실패함
문제점 또는 오류: 스테이지 5는 컨택 및 응답 기록 레코드를 2000년 1월 이전의 날짜로 마이그레이션하지 못하며 무결성 제한조건 위반함(상위 키를 찾을 수 없음) 오류를 표시합니다.
솔루션: 기본적으로, UA_Calendar 테이블에는 20000101로 시작되는 DateID 레코드가 있습니다(2000년 1월 1일에 해당됨). ContactDateTime 또는 ResponseDateTime 값이 UA_Calendar 테이블에 없는 날짜 ID를 참조하기 때문에 2000년 1월 1일 전의 컨택 및 응답 기록 레코드를 마이그레이션하지 못합니다.
이 문제점을 해결하려면, 다음 단계에 따라 원하는 날짜 ID로 대상 시스템의 UA_Calendar 테이블을 채우십시오.
1.
select min(ContactDate) from UA_ContactHistory
select min(ResponseDate) from UA_ResponseHistory
2.
대상 시스템의 UA_Calendar 테이블을 원하는 날짜 범위의 날짜 ID로 채우십시오. 다음 SQL Server의 예는1999년 1월 1일에서부터 1999년 12월 31일까지의 레코드를 삽입합니다. 굵은체의 값을 바꿔 시작 날짜와 종료 날짜를 각각 지정하십시오.
*
다음 예 코드는 Campaign 설치 아래 ddl 디렉토리의 ac_populate_tables_sqlsvr.sql 스크립트에서 가져옵니다. 데이터베이스가 DB2® 또는 Oracle인 경우, DDL 스크립트의 코드를 데이터베이스 유형에 사용하십시오(DB2®의 경우 ac_populate_tables_db2.sql 또는 Oracle의 경우 ac_populate_tables_ora.sql).
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