Ich habe folgendes SP:SQL Server: serializable Ebene nicht funktioniert
CREATE PROCEDURE [dbo].[sp_LockReader]
AS
BEGIN
SET NOCOUNT ON;
begin try
set transaction isolation level serializable
begin tran
select * from teste
commit tran
end try
begin catch
rollback tran
set transaction isolation level READ COMMITTED
end catch
set transaction isolation level READ COMMITTED
END
Die Tabelle "Test" viele Werte hat, so "select * from teste" mehrere Sekunden dauert. Ich führe den sp_LockReader gleichzeitig in zwei verschiedenen Abfragefenstern aus und der zweite zeigt den Inhalt der Testtabelle an, ohne dass der erste beendet wird.
- Sollte die serializable-Ebene die zweite Abfrage nicht warten?
- Wie bekomme ich das beschriebene Verhalten?
Dank
Der KB-Artikel scheint nur für SQL Server 2000 gelten. Ich bin ziemlich sicher, dass die meisten Menschen auf mindestens 2005 aktualisiert haben. –
Ja Jordan, du hast Recht. Es blockiert erfolgreich eine READ COMMITTED-Transaktion. Ich habe es mit 2008 R2 getestet. Lesezugriff wurde (in anderen Fällen) in zwei Szenarien gewährt, wenn die Zeilen XLOCK'ed waren - 1) auf einem READ UNCOMMITTED & 2) auf einem SNAPSHOT. Ein SNAPSHOT mit einem XLOCK wurde jedoch blockiert. – Srinidhi