SQL Server死鎖測試
SQL Server死鎖問題很值得我們去研究,下面就作了一個相關方面的測試,看看究竟什么時候會出現SQL Server死鎖問題。
SQL Server死鎖測試
--增設 帳戶表_2
CREATE TABLE 帳戶表_2
(
帳號 CHAR(4),
余額 INT
)
GO
INSERT 帳戶表_2
SELECT 'C',100
UNION ALL
SELECT 'D',200
--在第一個連接中執行以下語句
BEGIN TRAN
UPDATE 帳戶表 SET 余額=3 WHERE 帳號='A'
WAITFOR DELAY '00:00:10'
UPDATE 帳戶表_2 SET 余額=3 WHERE 帳號='C'
COMMIT TRAN
--在第二個連接中執行以下語句
BEGIN TRAN
UPDATE 帳戶表_2 SET 余額=4 WHERE 帳號='C'
WAITFOR DELAY '00:00:10'
UPDATE 帳戶表 SET 余額=4 WHERE 帳號='A'
COMMIT TRAN
--刪除測試表
DROP TABLE 帳戶表,帳戶表_2
--同時執行,系統會檢測出死鎖,第一個連接的事務可能正常執行,SQL Server 終止第二個連接的事務(不涉及超時)。
--如果沒有出現死鎖,則在其它事務釋放鎖之前,請求鎖的事務被阻塞。
--LOCK_TIMEOUT 設置允許應用程序設置語句等待阻塞資源的最長時間。
4、更新數據時候允許進行插入
5、插入數據時不允許更新\讀取
【編輯推薦】



















