Lição 3: GerenciandoTransações (Parte 1)


Transações podem ser definidas como um conjunto de ações e podem ser realizadas com sucesso ou não. São importantes para garantir a integridade e consistência dos dados em um banco de dados OLTP (Online Transaction Processing).

Entendendo Transações

As transações fornecem quanto principais funções (ACID):

Atomicidade – Uma transação deve ser uma unidade atômica de trabalho ou todas as suas modificações de dados são executadas ou nenhuma delas é executada.

Consistência – Quando concluída, uma transação deve deixar todos os dados em um estado consistente.

Isolamento – Modificações feitas por transações simultâneas devem ser isoladas das modificações feitas por qualquer outra transação simultânea.

Durabilidade – Depois que uma transação tiver sido concluída, seus efeitos ficam permanentemente no sistema. As modificações persistem até mesmo no caso de uma queda do sistema.

Definindo transações explicitas

Uma transação explicita inicia quando o comando BEGIN TRANSACTION é executado e finaliza quando o é executado um dos seguintes comandos COMMIT TRANSACTION ou ROLLBACK TRANSACTION.

Entendendo cenários especiais de ROLLBACK

Quando há transações aninhadas na mesma sessão, um comando ROLLBACK desfaz a transação aninhada. Isso acontece quando um comando COMMIT é executado antes do comando ROLLBACK. No exemplo a os dados são revertidos a primeira linha.

BEGIN TRANSACTION
INSERT
INTO TestTable
VALUES (1,‘a’,‘b
);

BEGIN TRANSACTION
UPDATE TestTable
SET Col2=‘c’
WHERE
Id = 1
    COMMIT TRANSACTION
ROLLBACK

Caso queira desfazer apenas uma parte da transação você pode definir savepoints usando o comando SAVE TRANSACTION nome_do_SavePoint, dessa forma a transação será desfeita até o último savepoint. Vale lembrar que você precisa definir o COMMIT.

Obtendo informação sobre transações

Quando trabalhamos com transações em stored procedures, tratamentos de erros devem ser realizados antes de fechar uma conexão.

Você pode utilizar o comando @@trancount para verificar a quantidade de transações ativas na sessão.

Para obter mais detalhes consulte as DMV’s abaixo:

sys.dm_tran_active_snapshot_database_transactions
sys.dm_tran_active_transactions
sys.dm_tran_current_snapshot
sys.dm_tran_current_transaction
sys.dm_tran_database_transactions
sys.dm_tran_locks
sys.dm_tran_session_transactions
sys.dm_tran_top_version_generators
sys.dm_tran_transactions_snapshot
sys.dm_tran_version_store

image

sys.dm_tran_active_transactions

[]’s

Andressa Alves Martins

Twitter: Dre_Martins  Skype: Dre.alvesm

Blog: http://sqlgo.wordpress.com

Anúncios

2 Responses to Lição 3: GerenciandoTransações (Parte 1)

  1. Recomendo esse artigo. Bem legal e rápido de ler! 🙂

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: