SnowConvert: 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.
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 | ✓ | ✓ | ✓ |
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. |
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 processa. Por exemplo, a variável myDB
é definida no arquivo de shell, mas esse é um arquivo que não faz parte da entrada para SnowConvert. 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
.