Postagens

Mostrando postagens de Setembro, 2014

Consultando apenas os registros "sujos" em uma tabela com Microsoft SQL Server

Imagem
Lidando com bancos de dados podemos controlar as transações e a maneira como podemos acessar os dados em transações concorrentes.

Os níveis de isolamento de transação e os comandos para tais serão discutidos em um próximo post, porém, resumidamente, temos (Serializável, snapshot, repeatable read, read commited, read uncommited).

Dirty read (read uncommited ou nolock) nos permitem visualizar os dados de uma tabela mesmo sendo sujos (alterados em outras transações). Isso garante, com certo nível de inconsistência se as transações forem desprezadas e o  rollback usado, uma leitura o mais rápido possível dos dados no seu estado atual quase que em tempo real.

No entanto, como separar os dados "sujos" daqueles que já estavam gravados e commitados?
Imagine que você tem um ambiente onde um sistema legado permite que a aplicação seja fechada, após uma exception ou queda de rede, sem dar commit ou rollback nas transações correntes. Você rapidamente ficaria com várias transações em ab…