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