TRANSACTION ISOLATION LEVEL


--SSMS預設是 SET TRANSACTION ISOLATION LEVEL READ_COMMITTED --SET TRANSACTION ISOLATION LEVEL REPEATABLE READ 是用 LOCK 的方式防止其他 TRAN 做 UPDATE 或 DELETE 的動作,但不能防止 INSERT 的動作,故有「幻讀問題(Phantom Read)」 --SET TRANSACTION ISOLATION LEVEL SERIALIZABLE 雖然都沒有其他問題,但是因為用 LOCK 的方式,故其他 TRAN 需等待該 TRAN COMMIT 之後才可以動作 --SET TRANSACTION ISOLATION LEVEL ALLOW_SNAPSHOT_ISOLATION 之前要執行「ALTER DATABASE [DB_NAME] SET ALLOW_SNAPSHOT_ISOLATION ON」,但若遲遲沒有成功,則執行「ALTER DATABASE [DB_NAME] SET ALLOW_SNAPSHOT_ISOLATION ON WITH ROLLBACK IMMEDIATE」 --SET TRANSACTION ISOLATION LEVEL READ COMMITTED 之前要執行「ALTER DATABASE [DB_NAME] SET READ_COMMITTED_SNAPSHOT ON」,但若遲遲沒有成功,則執行「ALTER DATABASE [DB_NAME] SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE」 --WAITFOR DELAY '00:00:05'--等待5秒

results matching ""

    No results matching ""