我试图将具有3000000行的table1数据移动到table2。
表行是根据行号移动的,所以我执行三个并发Insert into
查询,将每行三个查询的行记录为1000000,基于where条件中的行号。
我的目标表是table2,source是所有3个查询的table1。
现在问题是当我执行3个查询时,第一个正在运行,而其他两个查询出现错误,状态表被阻止。
请帮助我做错了什么,如何同时执行三个查询!!!!!
答案 0 :(得分:0)
如果行数很多,则必须有锁升级,并且一个会话正在获取表上的独占锁,而其他会话则被拒绝访问。你可以试试这个 -
USE MASTER;
ALTER DATABASE <yourDB>;
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
USE <yourDB>;
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
GO
<your SQL here>
这将允许您针对同一个表运行多个更新语句,而不会锁定。