2015-08-30 56 views
0

我需要能夠在執行某些工作時鎖定SQL Server中的表。鎖需要阻止其他會話讀取表。工作完成後,表格需要解鎖。SQL Server:鎖表阻止嘗試讀取表的其他會話

在MySQL我以這樣做:

LOCK TABLES [table] WRITE 

此時,當從表中讀取嘗試其他會話將被阻塞,直到表被解鎖。

UNLOCK TABLES 

現在阻塞會停止。

這可能在SQL Server中嗎?

+0

交易+隔離水平 – lad2025

+0

技術上可行嗎?是。在實踐中推薦 - 不。這真的會殺死你的系統性能。再想一想爲什麼*你真的需要這個 - 你可能根本不需要它。 –

+0

這是爲了確保後臺作業只能在集羣環境中的一個節點上運行。 – sjallamander

回答

2
BEGIN TRANSACTION 

    SELECT * FROM TableName WITH (TABLOCKX) 
    /* do your stuff here */ 

COMMIT TRANSACTION 

TABLOCKX將獲得表上的排他鎖,其他用戶將無法閱讀或直到您提交自己的事務更新數據。