SnowConvert AI - Rapport des objets manquants¶
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.
Objet |
Teradata |
Oracle |
Transact-SQL |
Redshift |
BigQuery |
Spark |
Databricks |
Hive |
Vertica |
PostgreSQL |
Greenplum |
Netezza |
Azure Synapse |
IBM DB2 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Table |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Vue |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Procédure |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Fonction |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Macro |
✓ |
|||||||||||||
Fonction de paquet |
✓ |
|||||||||||||
Procédure de paquet |
✓ |
|||||||||||||
*Paquet |
✓ |
|||||||||||||
Index de la jointure |
✓ |
|||||||||||||
Index |
✓ |
|||||||||||||
Synonyme |
✓ |
|||||||||||||
Lien de base de données |
✓ |
|||||||||||||
Type |
✓ |
✓ |
✓ |
✓ |
||||||||||
Vue matérialisée |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||
Déclencheur |
✓ |
✓ |
✓ |
✓ |
||||||||||
Séquence |
✓ |
✓ |
✓ |
✓ |
||||||||||
Contrainte |
✓ |
✓ |
✓ |
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 |
Indique le type de relation utilisée par l’unité de code de l’appelant et la référence MISSING. |
Problèmes connus¶
Avertissement
Les variables définies dans les fichiers shell utilisées dans les fichiers de script comme .bteq sont considérées comme des objets manquants, car leur définition ne fait pas partie des fichiers d’entrée que SnowConvert AI traite. Par exemple, la variable myDB est définie dans le fichier shell, mais il s’agit d’un fichier qui ne fait pas partie de l’entrée pour SnowConvert AI. Seul le fichier .bteq sera traité et, par conséquent, la ligne 5 sera marquée comme une référence manquante.
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.