SnowConvert : Rapport sur les 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.
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 | ✓ | ✓ | ✓ |
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. |
Problèmes connus¶
Avertissement
Les variables définies dans les fichiers shell utilisés 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 traités par SnowConvert. 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. 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
.