Link to this page: https://git.io/fhA7L
Links to software used in this course:
- SQL Server Downloads (LocalDB, used in the course, is in the SQL Server Express installation):
- Azure Data Studio (formerly SQL Server Operations Studio):
- SQL Server Management Studio (SSMS):
Docker Containers for SQL Server:
-
Windows
docker pull microsoft/mssql-server-windows-developer
-
Linux
docker pull microsoft/mssql-server-linux
Links to Microsoft documentation on concurrency and transactions:
- Transaction Locking and Row Versioning Guide
- SET TRANSACTION ISOLATION LEVEL
- Transaction Related Dynamic Management Views and Functions
- Extended Events
- Transactions
- TRY...CATCH
- SET XACT_ABORT
- SET LOCK_TIMEOUT
Snapshot Isolation
- Snapshot Isolation in SQL Server
- ALTER DATABASE SET Options
Related Pluralsight Courses:
- SQL Server: Introduction to Extended Events
- Handling Errors in SQL Server
- XML support in SQL Server
Miscellaneous SQL Server documentation links:
- Configuration Functions
Ebooks and other resources:
- Defensive Database Programming
- SQL Server Concurrency: Locking, Blocking and Row Versioning
- Troubleshooting SQL Server: A Guide for the Accidental DBA
- sp_whoisactive from Adam Machanic
One other question from module 4: Read Committed, time 2:54, you say,
"if you tried the same experiment from module 3, read uncommitted with the phantom reads. If you tried it, you'll know that the phantom reads are still there."
Well, I tried the suggested homework, and I didn't get phantom reads. In my test, when doing it with:
TRANSACTION ISOLATION LEVEL READ COMMITTED
READ_COMMITTED_SNAPSHOT OFF
the second
'select * from Orders.Orders;'
blocked because of the row lock on the new Orders insert.
Did you just say that to see who was paying attention, or... did I miss something?
I checked with one of my technical coaches, and he agreed with me that you don't get phantom reads in 'READ COMMITTED' only in 'READ UNCOMMITTED'.
What am I missing?