SnowConvert AI – 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.
Objekt |
Teradata |
Oracle |
Transact-SQL |
Redshift |
BigQuery |
Spark |
Databricks |
Hive |
Vertica |
PostgreSQL |
Greenplum |
Netezza |
Azure Synapse |
IBM-DB2 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tabelle |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Ansicht |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Prozedur |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Funktion |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Makro |
✓ |
|||||||||||||
Paketfunktion |
✓ |
|||||||||||||
Paketprozedur |
✓ |
|||||||||||||
*Paket |
✓ |
|||||||||||||
Join Index |
✓ |
|||||||||||||
Index |
✓ |
|||||||||||||
Synonym |
✓ |
|||||||||||||
Datenbank-Link |
✓ |
|||||||||||||
Typ |
✓ |
✓ |
✓ |
✓ |
||||||||||
Materialisierte Ansicht |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||
Trigger |
✓ |
✓ |
✓ |
✓ |
||||||||||
Sequenz |
✓ |
✓ |
✓ |
✓ |
||||||||||
Einschränkung |
✓ |
✓ |
✓ |
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. |
Relation_Type |
Zeigt die Art der Beziehung an, die über die Aufrufercodeeinheit und die MISSING-Referenz verwendet wird. |
Bekannte Probleme¶
Warnung
In Shell-Dateien definierte Variablen, die in Skriptdateien wie .bteq verwendet werden, gelten als fehlende Objekte, da ihre Definition nicht Teil der Eingabedateien ist, die SnowConvert AI verarbeitet. Beispielsweise ist die Variable myDB in der Shell-Datei definiert, aber dies ist eine Datei, die nicht Teil der Eingabe für SnowConvert AI ist. Es wird nur die .bteq-Datei verarbeitet, sodass Zeile 5 als fehlende Referenz markiert wird.
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.