0
我需要能夠在執行某些工作時鎖定SQL Server中的表。鎖需要阻止其他會話讀取表。工作完成後,表格需要解鎖。SQL Server:鎖表阻止嘗試讀取表的其他會話
在MySQL我以這樣做:
LOCK TABLES [table] WRITE
此時,當從表中讀取嘗試其他會話將被阻塞,直到表被解鎖。
UNLOCK TABLES
現在阻塞會停止。
這可能在SQL Server中嗎?
我需要能夠在執行某些工作時鎖定SQL Server中的表。鎖需要阻止其他會話讀取表。工作完成後,表格需要解鎖。SQL Server:鎖表阻止嘗試讀取表的其他會話
在MySQL我以這樣做:
LOCK TABLES [table] WRITE
此時,當從表中讀取嘗試其他會話將被阻塞,直到表被解鎖。
UNLOCK TABLES
現在阻塞會停止。
這可能在SQL Server中嗎?
BEGIN TRANSACTION
SELECT * FROM TableName WITH (TABLOCKX)
/* do your stuff here */
COMMIT TRANSACTION
TABLOCKX
將獲得表上的排他鎖,其他用戶將無法閱讀或直到您提交自己的事務更新數據。
交易+隔離水平 – lad2025
技術上可行嗎?是。在實踐中推薦 - 不。這真的會殺死你的系統性能。再想一想爲什麼*你真的需要這個 - 你可能根本不需要它。 –
這是爲了確保後臺作業只能在集羣環境中的一個節點上運行。 – sjallamander