Sql-Server-2000

在 READ COMMITTED 事務塊中使用 (NOLOCK)

  • December 8, 2011

我們使用的是 SQL Server 2000。

我想知道如果我們NOLOCK在事務塊中使用提示會有什麼風險READ COMMITTED,例如:

SET TRANSACTION ISOLATION LEVEL READ COMMITTED
GO
BEGIN TRANSACTION
IF EXISTS(SELECT * FROM clients (NOLOCK) WHERE clientID = 23249)
   BEGIN
       PRINT 'TODO Update client'
   END
ELSE
   BEGIN
       PRINT 'TODO Insert client'
   END

COMMIT TRANSACTION

我擔心的是 NOLOCK 提示將允許 ditry 讀取,儘管事務塊的隔離級別。

這可能嗎?

PS:我知道為什麼我首先使用鎖定提示存在爭議,但我只想知道這種情況下的風險是什麼。

該提示會覆蓋連接的隔離級別,因此您確實會允許從客戶端表中進行臟讀。

引用自:https://dba.stackexchange.com/questions/8937