Niveis de isolamento

Um assunto que gosto muito, é niveis de isolamento no SQL Server, ou seja, como uma transação ira se comportar em relação aos dados alterados em N situações pelas outras transações, por exemplo, Usuario A roda um select na tabela, no meio de uma transação de delete do usuario B, o usuario A ira ver os dados deletados? Sim? Não? Bom, a resposta esta abaixo:

SET TRANSACTION ISOLATION LEVEL READ COMMITTED
--UPDATE DO OUTRO USUARIO
SELECT * FROM Funcionario --COM LOCK

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
--UPDATE DO OUTRO USUARIO
SELECT * FROM Funcionario -- SEM LOCK E DADOS SUJOS

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRAN
SELECT * FROM Funcionario


COM LOCK PARA OUTROS USUARIOS DE TABELA EM IX, OU SEJA, ESSA QUERY É MAIOR NA HIERARQUIA, E MESMO SÓ SENDO UM SELECT, NENHUMA OUTRA QUERY PODE ALTERAR NADA NA TABELA, POIS ALTERARIA O RESULTADO DESTA.
UPDATE DO OUTRO USUARIO EM LOCK

COMMIT

SET TRANSACTION ISOLATION LEVEL SNAPSHOT
BEGIN TRAN
SELECT * FROM Funcionario -- Fabrizzio
--UPDATE OUTRO USUARIO DE FABRIZZIO PARA CAPUTO COM COMMIT
SELECT * FROM Funcionario -- Fabrizzio
--TENTATIVA DE UPDATE NO DADO ALTERADO
UPDATE Funcionario SET NomeFuncionario = 'Antoniaci' WHERE IdFuncionario = 1

--ERRO
Msg 3960, Level 16, State 4, Line 1
Snapshot isolation transaction aborted due to update conflict. You cannot use snapshot isolation to access table 'dbo.Funcionario' directly or indirectly in database 'master' to update, delete, or insert the row that has been modified or deleted by another transaction. Retry the transaction or change the isolation level for the update/delete statement.


Como o tempo realmente anda corrido, não pude fazer este post com maiores detalhes, mas qualquer duvida, pode perguntar!

Anúncios
Post a comment or leave a trackback: Trackback URL.

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: