执行多个插入查询表示表已锁定

时间:2014-11-25 08:18:35

标签: sql-server sql-server-2008 insert-into row-number

我试图将具有3000000行的table1数据移动到table2。

表行是根据行号移动的,所以我执行三个并发Insert into查询,将每行三个查询的行记录为1000000,基于where条件中的行号。

我的目标表是table2,source是所有3个查询的table1。

现在问题是当我执行3个查询时,第一个正在运行,而其他两个查询出现错误,状态表被阻止。

请帮助我做错了什么,如何同时执行三个查询!!!!!

1 个答案:

答案 0 :(得分:0)

如果行数很多,则必须有锁升级,并且一个会话正在获取表上的独占锁,而其他会话则被拒绝访问。你可以试试这个 -

    USE MASTER;
    ALTER DATABASE <yourDB>;
    SET ALLOW_SNAPSHOT_ISOLATION ON;
    GO

    USE <yourDB>;
    SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
    GO

    <your SQL here>

这将允许您针对同一个表运行多个更新语句,而不会锁定。