Tutoriais Hop

  • Escrito por Miguel Domiciano Vieira
  • Publicado em Tutoriais Apache Hop
  • Hits: 129
Estrela inativaEstrela inativaEstrela inativaEstrela inativaEstrela inativa
 

Problema:


Durante transforms de output, como Insert/Update para o SQL Server, mesmo com o commit size definido em 1000 as consultas SELECT no SQL Server retornam dados fora da escala, não informando os dados de 1000 em 1000, assim como definido no commit size, exibindo dados que ainda não foram confirmados.

Garantindo que o autocommit está desativado

Em Metadata->Database Connection
selecione sua conexão com o SQL Server

nas configurações da conexão, clique em Advanced no campo "The SQL statements to run after connecting (; separated)" coloque o comando:
SET IMPLICIT_TRANSACTIONS ON

Assim, sempre que o Apache Hop iniciar uma nova sessão com o SQL Server, o auto commit será desativado

Habilitar filtro de uncommitted no SQL Server

Para filtrar dados não confirmados (uncommitted) no SELECT, é necessário habilitar o isolamento por snapshot no SQL Server.
Execute o comando no banco desejado:
ALTER DATABASE nomedatabase
SET ALLOW_SNAPSHOT_ISOLATION ON;

Isso permite que o banco de dados utilize isolamento por snapshot.

Filtro por sessão ou configuração padrão

Por sessão

Você pode configurar o nível de isolamento da transação da sessão, sempre que for fazer um SELECT no SQL Server antes execute o comando:
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;

Configuração padrão

Você pode também habilitar o comportamento de snapshot como padrão para o isolamento de transações, executando no SQL Sever o comando:
ALTER DATABASE nomedatabase
SET READ_COMMITTED_SNAPSHOT ON;
Assim todas as transações que usam o nível de isolamento read committed se comportam como snapshot , filtrando dados uncommitted.

Resultado final

Após aplicar os passos anteriores, o SELECT no SQL Server passa a filtrar os dados não confirmados (uncommitted).

Log in