SnowConvert AI - Relatório de objetos ausentes¶
O que é um «objeto ausente»?¶
Objeto ausente é o termo usado para se referir às definições DDL ausentes dentro do código-fonte que estão sendo referenciadas por unidades de código. A tabela abaixo mostra quais elementos podem ser objetos ausentes em cada linguagem suportada.
Objeto |
Teradata |
Oracle |
Transact-SQL |
Redshift |
BigQuery |
Spark |
Databricks |
Hive |
Vertica |
PostgreSQL |
Greenplum |
Netezza |
Azure Synapse |
IBM DB2 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tabela |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Exibição |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Procedimento |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Função |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Macro |
✓ |
|||||||||||||
Função do pacote |
✓ |
|||||||||||||
Procedimento do pacote |
✓ |
|||||||||||||
*Pacote |
✓ |
|||||||||||||
Índice de junção |
✓ |
|||||||||||||
Índice |
✓ |
|||||||||||||
Sinônimo |
✓ |
|||||||||||||
Link de banco de dados |
✓ |
|||||||||||||
Tipo |
✓ |
✓ |
✓ |
✓ |
||||||||||
Exibição materializada |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||
Acionador |
✓ |
✓ |
✓ |
✓ |
||||||||||
Sequência |
✓ |
✓ |
✓ |
✓ |
||||||||||
Restrição |
✓ |
✓ |
✓ |
Nota
Se um asterisco (“*”) estiver listado na seção acima, isso significa que o objeto é usado para chamar propriedades de si mesmo que não são consideradas instruções DDL, como constantes, variáveis ou cursores.
Onde posso encontrá-lo?¶
O relatório de objetos ausentes pode ser encontrado em uma pasta chamada «reports», na pasta de saída de sua conversão. O nome do arquivo em si começa com «MissingObjectReferences» para que possa ser facilmente localizado.
O formato do arquivo é .CSV.
Que informações ele contém?¶
O relatório de objetos ausentes contém as seguintes informações sobre todos os objetos ausentes encontrados durante a conversão:
Coluna |
Descrição |
|---|---|
PartitionKey |
O identificador exclusivo da conversão. |
FileName |
O nome do arquivo no qual o objeto está localizado. |
Caller_CodeUnit |
O tipo de unidade de código que faz referência a um elemento ausente. |
Caller_CodeUnit_Database |
O banco de dados em que a unidade de código que faz referência ao elemento ausente é implantada. Por enquanto, somente os objetos do servidor SQL podem ter um banco de dados. |
Caller_CodeUnit_Schema |
O esquema em que a unidade de código que faz referência ao elemento ausente é implantada. |
Caller_CodeUnit_Name |
O nome da unidade de código que faz referência ao elemento ausente. |
Caller_CodeUnit_FullName |
O nome qualificado completo da unidade de código que faz referência ao elemento ausente. |
Referenced_Element_Database |
O banco de dados em que o elemento ausente está implantado. Por enquanto, somente os objetos do servidor SQL podem ter um banco de dados. |
Referenced_Element_Schema |
O esquema em que o elemento ausente é implantado. |
Referenced_Element_Name |
O nome do elemento ausente. |
Referenced_Element_FullName |
O nome qualificado completo do elemento ausente. |
Linha |
O número da linha dentro do arquivo em que a referência está localizada. |
Relation_Type |
Mostra o tipo de relação usado por meio da unidade de código do autor da chamada e da referência de MISSING. |
Problemas conhecidos¶
Aviso
As variáveis definidas em arquivos shell usados em arquivos de script como .bteq são consideradas objetos ausentes porque sua definição não faz parte dos arquivos de entrada que o SnowConvert AI processa. Por exemplo, a variável myDB é definida no arquivo shell, mas esse é um arquivo que não faz parte da entrada do SnowConvert AI. Somente o arquivo .bteq será processado e, portanto, a linha 5 será marcada como uma referência ausente.
export myDB=exampleDatabase
bteq < example.bteq
.LABEL EX_SQE
create multiset volatile table DR as
select * from ${myDB}.myTable;
Aviso
O pré-processamento de uma carga de trabalho Oracle por meio da divisão de pacotes pode resultar em referências extras ausentes se o esquema do pacote não for especificado nos objetos extraídos.
Código original
CREATE package Schema1.Package1
IS
CREATE TABLE Table1 (
col1 INTEGER
);
CREATE PROCEDURE Proc1
BEGIN
SELECT * FROM Schema1.Table1;
END
END
Observe que, nesse caso, Table1 é criada automaticamente dentro do esquema Schema1, de modo que a referência na linha 9 é resolvida corretamente. No entanto, se um processo de divisão de pacotes for executado antes da migração e os arquivos resultantes forem como estes:
Código modificado após um processo de divisão de pacote
CREATE TABLE Table1 (
col1 INTEGER1
);
CREATE PROCEDURE Proc1
BEGIN
SELECT * FROM Schema1.Table1;
END
A referência na linha 3 do arquivo Schema1_Proc1.sql será marcada como uma referência ausente, pois Table1 não foi criada explicitamente no esquema Schema1.