SnowConvert: 누락된 오브젝트 보고서¶
“누락된 오브젝트”란 무엇인가요?¶
누락된 오브젝트는 코드 단위에서 참조하는 소스 코드 내에서 누락된 DDL 정의를 가리키는 용어입니다. 아래 테이블은 지원되는 각 언어에서 어떤 요소에 오브젝트가 누락될 수 있는지 보여줍니다.
Object | Teradata | Oracle | SQL Server | Extensibility Languages |
---|---|---|---|---|
Table | ✓ | ✓ | ✓ | ✓ |
View | ✓ | ✓ | ✓ | ✓ |
Procedure | ✓ | ✓ | ✓ | ✓ |
Function | ✓ | ✓ | ✓ | ✓ |
Macro | ✓ | |||
Package Function | ✓ | |||
Package Procedure | ✓ | |||
*Package | ✓ | |||
Join Index | ✓ | |||
Index | ✓ | |||
Synonym | ✓ | |||
Database Link | ✓ | |||
Type | ✓ | ✓ | ✓ | |
Materialized View | ✓ | ✓ | ||
Trigger | ✓ | ✓ | ✓ | |
Sequence | ✓ | ✓ | ✓ | |
Constraint | ✓ | ✓ | ✓ |
참고
위 섹션에 별표(‘*’)가 목록에 있는 경우 상수, 변수 또는 커서와 같이 DDL 문으로 간주되지 않는 속성을 오브젝트 자체에서 호출하는 데 사용되는다는 의미입니다.
어디서 찾을 수 있나요?¶
누락된 오브젝트 보고서는 변환의 출력 폴더에 있는 “reports” 폴더에서 찾을 수 있습니다. 파일 이름 자체가 _”MissingObjectReferences”_로 시작하므로 쉽게 위치를 찾을 수 있습니다.
파일 형식은 .CSV 입니다.
어떤 정보가 포함되어 있나요?¶
누락된 오브젝트 보고서에는 변환하는 동안 발견된 모든 누락된 오브젝트에 대한 다음 정보가 포함되어 있습니다.
열 |
설명 |
---|---|
PartitionKey |
변환의 고유 식별자입니다. |
FileName |
오브젝트가 위치한 파일의 이름입니다. |
Caller_CodeUnit |
누락된 요소를 참조하는 코드 단위 유형입니다. |
Caller_CodeUnit_Database |
누락된 요소를 참조하는 코드 단위가 배포된 데이터베이스입니다. 현재로서는 SQL 서버 오브젝트만 데이터베이스를 가질 수 있습니다. |
Caller_CodeUnit_Schema |
누락된 요소를 참조하는 코드 단위가 배포되는 스키마입니다. |
Caller_CodeUnit_Name |
누락된 요소를 참조하는 코드 단위의 이름입니다. |
Caller_CodeUnit_FullName |
누락된 요소를 참조하는 코드 단위의 정규화된 이름입니다. |
Referenced_Element_Database |
누락된 요소가 배포된 데이터베이스입니다. 현재로서는 SQL 서버 오브젝트만 데이터베이스를 가질 수 있습니다. |
Referenced_Element_Schema |
누락된 요소가 배포된 스키마입니다. |
Referenced_Element_Name |
누락된 요소의 이름입니다. |
Referenced_Element_FullName |
누락된 요소의 정규화된 이름입니다. |
라인 |
참조가 위치한 파일 내부의 라인 번호입니다. |
Known Issues¶
경고
.bteq와 같은 스크립트 파일에 사용되는 셸 파일에 정의된 변수는 SnowConvert 가 처리하는 입력 파일의 일부가 아니므로 누락된 오브젝트로 간주됩니다. 예를 들어, myDB
변수는 셸 파일에 정의되어 있지만, SnowConvert 에 대한 입력의 일부가 아닌 파일입니다. .bteq 파일만 처리되므로 5번째 라인은 참조가 누락된 것으로 표시됩니다.
export myDB=exampleDatabase
bteq < example.bteq
.LABEL EX_SQE
create multiset volatile table DR as
select * from ${myDB}.myTable;
경고
패키지를 분할하여 Oracle 워크로드를 전처리하면 패키지의 스키마가 추출된 오브젝트에 지정되지 않은 경우 추가로 누락된 참조가 발생할 수 있습니다.
원본 코드
CREATE package Schema1.Package1
IS
CREATE TABLE Table1 (
col1 INTEGER
);
CREATE PROCEDURE Proc1
BEGIN
SELECT * FROM Schema1.Table1;
END
END
이 경우 Table1
은 Schema1
내에 자동으로 생성되므로 9번째 라인의 참조가 올바르게 확인됩니다. 그러나 마이그레이션 전에 패키지 분할 프로세스가 실행되고 그 결과 파일이 다음과 같은 경우:
패키지 분할 프로세스 후 수정된 코드
CREATE TABLE Table1 (
col1 INTEGER1
);
CREATE PROCEDURE Proc1
BEGIN
SELECT * FROM Schema1.Table1;
END
Table1
이 스키마 Schema1
내에서 명시적으로 생성되지 않았기 때문에 파일 Schema1_Proc1.sql
의 3번째 줄에 있는 참조는 누락된 참조로 표시됩니다.