Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 1.96 KB | None | 0 0
  1. --Dirty Reads Part 1
  2. BEGIN TRANSACTION
  3. UPDATE Adresa SET strada = 'DENUMIRE'
  4. WHERE id_adresa = 7
  5. WAITFOR DELAY '00:00:10'
  6. ROLLBACK TRANSACTION
  7.  
  8. --Dirty Reads Part 2
  9. SET TRANSACTION ISOLATION LEVEL READ
  10. UNCOMMITTED
  11. BEGIN TRAN
  12. SELECT * FROM Adresa
  13. WAITFOR DELAY '00:00:15'
  14. SELECT * FROM Adresa
  15. COMMIT TRAN
  16.  
  17. --Solution: SET TRANSACTION ISOLATION LEVEL TO READ COMMITTED
  18. SET TRANSACTION ISOLATION LEVEL READ COMMITTED
  19. BEGIN TRAN
  20. SELECT * FROM Adresa
  21. WAITFOR DELAY '00:00:15'
  22. SELECT * FROM Adresa
  23. COMMIT TRAN
  24.  
  25. -- Non repeatable 1
  26. INSERT INTO Adresa VALUES('dsda')
  27. BEGIN TRAN
  28. WAITFOR DELAY '00:00:05'
  29. UPDATE Adresa SET strada='DDD' WHERE
  30. strada = 'dsda'
  31. COMMIT TRAN
  32.  
  33. -- Non repeatable 2
  34. SET TRANSACTION ISOLATION LEVEL READ
  35. COMMITTED
  36. BEGIN TRAN
  37. SELECT * FROM Adresa
  38. WAITFOR DELAY '00:00:05'
  39. SELECT * FROM Adresa
  40. COMMIT TRAN
  41.  
  42. -- Non repeatable SOLUTION
  43. SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
  44. BEGIN TRAN
  45. SELECT * FROM Adresa
  46. WAITFOR DELAY '00:00:05'
  47. SELECT * FROM Adresa
  48. COMMIT TRAN
  49.  
  50. -- Phantom Reads Part 1
  51. -- DELETE FROM LiniiProduse
  52. BEGIN TRAN
  53. WAITFOR DELAY '00:00:04'
  54. INSERT INTO Adresa VALUES('333')
  55. COMMIT TRAN
  56.  
  57. --Phantom Reads Part 2
  58. SET TRANSACTION ISOLATION LEVEL REPEATABLE
  59. READ
  60. BEGIN TRAN
  61. SELECT * FROM Adresa
  62. WAITFOR DELAY '00:00:05'
  63. SELECT * FROM Adresa
  64. COMMIT TRAN
  65.  
  66. -- Phantom reads SOLUTION
  67. SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
  68. BEGIN TRAN
  69. SELECT * FROM Adresa
  70. WAITFOR DELAY '00:00:05'
  71. SELECT * FROM Adresa
  72. COMMIT TRAN
  73.  
  74.  
  75. -- DEADLOCK
  76.  
  77. -- transaction 1
  78. BEGIN tran
  79. UPDATE Persoana SET varsta=5000
  80. waitfor delay '00:00:10'
  81. UPDATE Persoana SET nume='DEAD'
  82. commit tran
  83.  
  84.  
  85. -- transaction 2
  86. BEGIN tran
  87. UPDATE Persoana SET nume='DEAD'
  88. waitfor delay '00:00:10'
  89. UPDATE Persoana SET varsta=500
  90. commit tran
  91.  
  92. -- deadlock SOLUTION
  93.  
  94. -- transaction 2
  95. SET DEADLOCK_PRIORITY HIGH
  96. BEGIN tran
  97. UPDATE Adresa SET strada='DEAD'
  98. waitfor delay '00:00:10'
  99. UPDATE Persoana SET varsta=500
  100. commit tran
  101.  
  102. EXEC dbo.Dead2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement