2015-08-30 36 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将获得表上的排他锁,其他用户将无法阅读或直到您提交自己的事务更新数据。