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 Serverオブジェクトのみがデータベースを持つことができます。 |
Caller_CodeUnit_Schema |
欠落要素を参照するコードユニットが配置されるスキーマ。 |
Caller_CodeUnit_Name |
欠落要素を参照するコードユニットの名前。 |
Caller_CodeUnit_FullName |
欠落要素を参照するコードユニットの完全修飾名。 |
Referenced_Element_Database |
欠落要素が配置されているデータベース。現時点では、 SQL Serverオブジェクトのみがデータベースを持つことができます。 |
Referenced_Element_Schema |
欠落要素が配置されているスキーマ。 |
Referenced_Element_Name |
欠落要素の名前。 |
Referenced_Element_FullName |
欠落要素の完全修飾名。 |
行 |
参照があるファイル内の行番号。 |
既知の問題¶
警告
.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行目の参照は欠落参照としてマークされます。