I sat up a test database for this question and rigged a test running the two queries from two different machines. I was able to read the data in query 2 without any problems. Based on that I obviously answered the question wrong 🙂
I guess the second query has has to be run at the exact same time as the first query for the blocking to occur? I did put in a sleep for two minutes before I closed the the first query.
My test database was a SQL Server 2012 standard edition. On the test database which I called "Snapshot" I ran this:
ALTER DATABASE Snapshot SET READ_COMMITTED_SNAPSHOT ON
I then started this as the first query:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
UPDATE dbo.CustomerOrderDetails SET Price = Price * 1.10
WHERE Order_Id = 1001;
WAITFOR DELAY '00:02'
During the two minutes I ran this query on the other machine:
SELECT * FROM dbo.CustomerOrderDetails WHERE Order_Id = 1002;
It constantly returned the result for me (I also tried with other Order_id values, even 1001).
I probably did something wrong, but what?