Sql server 如何防止SQL Server在并行插入时锁定表?

Sql server 如何防止SQL Server在并行插入时锁定表?,sql-server,locking,Sql Server,Locking,SQL Server在插入时锁定表,以防止多个并行插入 我正在尝试并行地从多个源表插入到目标表中,以加快进程。源表有500多万条记录 我没有索引、id列或表上定义的任何内容 create table target(col1 varchar(255), col2 varchar(255),col3 varchar(255)) 过程1: insert into target (col1, col2, col3) as select t1_1, t1_2, current_timestamp fro

SQL Server在插入时锁定表,以防止多个并行插入

我正在尝试并行地从多个源表插入到目标表中,以加快进程。源表有500多万条记录

我没有索引、id列或表上定义的任何内容

create table target(col1 varchar(255), col2 varchar(255),col3 varchar(255))
过程1:

insert into target (col1, col2, col3) as select t1_1, t1_2, current_timestamp from table1;
过程2:

insert into target (col1, col2, col3) as select t2_1, t2_2, current_timestamp from table2;
过程3:

insert into target (col1, col2, col3) as select t3_1, t3_2, current_timestamp from table3;
我希望这些插件能够并行工作

第一个过程有效,但其他过程失败。但我一直收到以下错误:

1204,b'SQL Server数据库引擎的实例无法获取 此时锁定资源。当数量较少时,请重新运行语句 活跃用户。请数据库管理员检查锁和 此实例的内存配置,或检查是否长期运行 transactions.DB-Lib错误消息20018,严重性19:\n一般SQL 服务器错误:检查来自SQL Server的消息\n'


SQL Server是否允许多个并发进程插入要并行插入的大量数据?如果是这样,如何防止这些锁?

重复插入500多万行会很慢。为什么不也使用它呢?一旦你完成了一个没有索引、超过1500万行的表,查询起来会很可怕。你也不应该同时做这些。插入500万行所需的锁定量非常重要。请阅读以下内容: