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.

ObjectTeradataOracleSQL ServerExtensibility 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
Copy
.LABEL EX_SQE

create multiset volatile table DR as
   select * from ${myDB}.myTable;
Copy

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   
Copy

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
  ); 
Copy
CREATE PROCEDURE Proc1
    BEGIN
        SELECT * FROM Schema1.Table1;
    END
Copy

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.