SnowConvert AI - Missing Objects Report¶
Qu’est-ce qu’un « objet manquant » ?¶
L’objet manquant est le terme utilisé pour se référer aux définitions DDL manquantes à l’intérieur du code source qui sont référencées par les unités de code. La table ci-dessous indique les éléments qui pourraient être des objets manquants dans chaque langue prise en charge.
Object |
Teradata |
Oracle |
Transact-SQL |
Redshift |
BigQuery |
Spark |
Databricks |
Hive |
Vertica |
PostgreSQL |
Greenplum |
Netezza |
Azure Synapse |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Table |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
View |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Procedure |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Function |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Macro |
✓ |
||||||||||||
Package Function |
✓ |
||||||||||||
Package Procedure |
✓ |
||||||||||||
*Package |
✓ |
||||||||||||
Join Index |
✓ |
||||||||||||
Index |
✓ |
||||||||||||
Synonym |
✓ |
||||||||||||
Database Link |
✓ |
||||||||||||
Type |
✓ |
✓ |
✓ |
✓ |
|||||||||
Materialized View |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
||
Trigger |
✓ |
✓ |
✓ |
✓ |
|||||||||
Sequence |
✓ |
✓ |
✓ |
✓ |
|||||||||
Constraint |
✓ |
✓ |
✓ |
Note
Si un astérisque (“*”) est répertorié dans la section ci-dessus, cela signifie que l’objet est utilisé pour appeler des propriétés à partir de lui-même qui ne sont pas considérées comme des instructions DDL telles que des constantes, des variables ou des curseurs.
Où puis-je le trouver ?¶
Le rapport sur les objets manquants se trouve dans un dossier nommé « reports », dans le dossier de sortie de votre conversion. Le nom du fichier lui-même commence par « MissingObjectReferences » afin qu’il puisse être facilement localisé.
Le format du fichier est le suivant : .CSV.
Quelles informations contient-il ?¶
Le rapport sur les objets manquants contient les informations suivantes sur tous les objets manquants trouvés lors de la conversion :
Colonne |
Description |
---|---|
PartitionKey |
L’identificateur unique de la conversion. |
FileName |
Le nom du fichier dans lequel se trouve l’objet. |
Caller_CodeUnit |
Le type d’unité de code qui fait référence à un élément manquant. |
Caller_CodeUnit_Database |
La base de données où est déployée l’unité de code faisant référence à l’élément manquant. Pour l’instant, seuls les objets du serveur SQL peuvent avoir une base de données. |
Caller_CodeUnit_Schema |
Le schéma dans lequel est déployée l’unité de code faisant référence à l’élément manquant. |
Caller_CodeUnit_Name |
Le nom de l’unité de code faisant référence à l’élément manquant. |
Caller_CodeUnit_FullName |
Le nom complet qualifié de l’unité de code faisant référence à l’élément manquant. |
Referenced_Element_Database |
La base de données dans laquelle l’élément manquant est déployé. Pour l’instant, seuls les objets du serveur SQL peuvent avoir une base de données. |
Referenced_Element_Schema |
Le schéma dans lequel l’élément manquant est déployé. |
Referenced_Element_Name |
Le nom de l’élément manquant. |
Referenced_Element_FullName |
Le nom complet de l’élément manquant. |
Ligne |
Le numéro de ligne dans le fichier où se trouve la référence. |
Relation_Type |
Shows the type of relation used through the caller code unit and the MISSING reference. |
Problèmes connus¶
Avertissement
Variables defined in shell files used in script files like .bteq are considered missing objects because their definition is not part of the input files that SnowConvert AI processes. E.g. the myDB
variable is defined in the shell file but this is a file that is not part of the input for SnowConvert AI. Only the .bteq file will be processed and therefore, line 5 will be marked as a missing reference.
export myDB=exampleDatabase
bteq < example.bteq
.LABEL EX_SQE
create multiset volatile table DR as
select * from ${myDB}.myTable;
Avertissement
Le prétraitement d’une charge de travail Oracle en divisant les paquets peut entraîner des références manquantes supplémentaires si le schéma du paquet n’est pas spécifié dans les objets extraits.
Code d’origine
CREATE package Schema1.Package1
IS
CREATE TABLE Table1 (
col1 INTEGER
);
CREATE PROCEDURE Proc1
BEGIN
SELECT * FROM Schema1.Table1;
END
END
Remarquez que dans ce cas, Table1
est automatiquement créé dans le schéma Schema1
, de sorte que la référence de la ligne 9 se résout correctement. Toutefois, si un processus de division du paquet est exécuté avant la migration et que les fichiers résultants ressemblent à ceux-ci :
Code modifié après un processus de division du paquet
CREATE TABLE Table1 (
col1 INTEGER1
);
CREATE PROCEDURE Proc1
BEGIN
SELECT * FROM Schema1.Table1;
END
La référence à la ligne 3 du fichier Schema1_Proc1.sql
sera marquée comme une référence manquante, car Table1
n’a pas été explicitement créée dans le schéma Schema1
.