SnowConvert: Bericht über fehlende Objekte¶
Was ist ein „fehlendes Objekt“?¶
„Fehlendes Objekt“ ist der Begriff, der sich auf fehlende DDL-Definitionen im Quellcode bezieht, auf die von Codeeinheiten verwiesen wird. Die folgende Tabelle zeigt, welche Elemente in jeder unterstützten Sprache fehlen können.
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 | ✓ | ✓ | ✓ |
Bemerkung
Wenn im obigen Abschnitt ein Sternchen (*) aufgeführt ist, bedeutet dies, dass das Objekt verwendet wird, um Eigenschaften von sich selbst aus aufzurufen, die nicht als DDL-Anweisungen gelten, wie Konstanten, Variablen oder Cursor.
Wo kann ich es finden?¶
Der Bericht über fehlende Objekte befindet sich in einem Ordner namens reports im Ausgabeordner Ihrer Konvertierung. Der Name der Datei selbst beginnt mit MissingObjectReferences, damit sie leicht gefunden werden kann.
Das Format der Datei ist .CSV.
Welche Informationen sind darin enthalten?¶
Der Bericht über fehlende Objekte enthält die folgenden Informationen über alle bei der Konvertierung als fehlend festgestellten Objekte:
Spalte |
Beschreibung |
---|---|
PartitionKey |
Der eindeutige Bezeichner der Konvertierung. |
FileName |
Der Name der Datei, in der sich das Objekt befindet. |
Caller_CodeUnit |
Der Typ der Codeeinheit, die auf ein fehlendes Element verweist. |
Caller_CodeUnit_Database |
Die Datenbank, in der die Codeeinheit, die auf das fehlende Element verweist, bereitgestellt wird. Derzeit können nur SQL Server-Objekte eine Datenbank haben. |
Caller_CodeUnit_Schema |
Das Schema, in dem die Codeeinheit, die das fehlende Element referenziert, bereitgestellt wird. |
Caller_CodeUnit_Name |
Der Name der Codeeinheit, die das fehlende Element referenziert. |
Caller_CodeUnit_FullName |
Der vollqualifizierte Name der Codeeinheit, die das fehlende Element referenziert. |
Referenced_Element_Database |
Die Datenbank, in der das fehlende Element bereitgestellt wird. Derzeit können nur SQL Server-Objekte eine Datenbank haben. |
Referenced_Element_Schema |
Das Schema, in dem das fehlende Element bereitgestellt wird. |
Referenced_Element_Name |
Der Name des fehlenden Elements. |
Referenced_Element_FullName |
Der vollqualifizierte Name des fehlenden Elements. |
Line |
Die Zeilennummer innerhalb der Datei, in der sich die Referenz befindet. |
Bekannte Probleme¶
Warnung
In Shell-Dateien definierte Variablen, die in Skriptdateien wie .bteq-Dateien verwendet werden, gelten als fehlende Objekte, da ihre Definition nicht Teil der Eingabedateien ist, die SnowConvert verarbeitet. Zum Beispiel ist die Variable myDB
in der Shell-Datei definiert, aber diese Datei ist nicht Teil der Eingabe für SnowConvert. Es wird nur die .bteq-Datei verarbeitet, und daher wird die Zeile 5 als fehlende Referenz markiert.
export myDB=exampleDatabase
bteq < example.bteq
.LABEL EX_SQE
create multiset volatile table DR as
select * from ${myDB}.myTable;
Warnung
Die Vorverarbeitung einer Oracle-Workload durch Aufteilung von Paketen kann zu zusätzlichen fehlenden Referenzen führen, wenn das Schema des Pakets nicht in den extrahierten Objekten angegeben ist.
Ursprünglicher Code
CREATE package Schema1.Package1
IS
CREATE TABLE Table1 (
col1 INTEGER
);
CREATE PROCEDURE Proc1
BEGIN
SELECT * FROM Schema1.Table1;
END
END
Beachten Sie, dass in diesem Fall Table1
automatisch innerhalb des Schemas Schema1
erstellt wird, sodass die Referenz in Zeile 9 korrekt aufgelöst wird. Wenn jedoch vor der Migration ein Paketaufteilungsprozess ausgeführt wird und die resultierenden Dateien wie diese aussehen:
Geänderter Code nach einem Paketaufteilungsprozess
CREATE TABLE Table1 (
col1 INTEGER1
);
CREATE PROCEDURE Proc1
BEGIN
SELECT * FROM Schema1.Table1;
END
Die Referenz in Zeile 3 der Datei Schema1_Proc1.sql
wird als fehlende Referenz markiert, da Table1
nicht explizit innerhalb des Schemas Schema1
erstellt wurde.