SnowConvert: 누락된 오브젝트 보고서

“누락된 오브젝트”란 무엇인가요?

누락된 오브젝트는 코드 단위에서 참조하는 소스 코드 내에서 누락된 DDL 정의를 가리키는 용어입니다. 아래 테이블은 지원되는 각 언어에서 어떤 요소에 오브젝트가 누락될 수 있는지 보여줍니다.

ObjectTeradataOracleSQL ServerExtensibility 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
Copy
.LABEL EX_SQE

create multiset volatile table DR as
   select * from ${myDB}.myTable;
Copy

경고

패키지를 분할하여 Oracle 워크로드를 전처리하면 패키지의 스키마가 추출된 오브젝트에 지정되지 않은 경우 추가로 누락된 참조가 발생할 수 있습니다.

원본 코드

CREATE package Schema1.Package1
IS
  CREATE TABLE Table1 (
    col1 INTEGER
  );
  
  CREATE PROCEDURE Proc1
    BEGIN
      SELECT * FROM Schema1.Table1;
    END

END   
Copy

이 경우 Table1Schema1 내에 자동으로 생성되므로 9번째 라인의 참조가 올바르게 확인됩니다. 그러나 마이그레이션 전에 패키지 분할 프로세스가 실행되고 그 결과 파일이 다음과 같은 경우:

패키지 분할 프로세스 후 수정된 코드

  CREATE TABLE Table1 (
    col1 INTEGER1
  ); 
Copy
CREATE PROCEDURE Proc1
    BEGIN
        SELECT * FROM Schema1.Table1;
    END
Copy

Table1 이 스키마 Schema1 내에서 명시적으로 생성되지 않았기 때문에 파일 Schema1_Proc1.sql 의 3번째 줄에 있는 참조는 누락된 참조로 표시됩니다.