Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 防止在大容量插入时锁定整个表_Sql Server_Sql Server 2005_Sql Server 2008 - Fatal编程技术网

Sql server 防止在大容量插入时锁定整个表

Sql server 防止在大容量插入时锁定整个表,sql-server,sql-server-2005,sql-server-2008,Sql Server,Sql Server 2005,Sql Server 2008,我有一个在表中执行大容量插入的存储过程。我在INSERT查询上方添加了begintransaction命令,以便在出现问题时启用rollback。启动大容量插入时,它锁定了整个表,其他用户无法在同一个表上执行SELECT 我不明白为什么SQL Server会锁定整个表,即使是SELECT 我正在使用SQLServer2005Express。这是这个版本的问题还是在2008年仍然存在?如何克服这种情况写入程序不应阻止读卡器您有一个打开的事务。这意味着SQL Server需要保留表的状态,并且您正在

我有一个在表中执行大容量插入的存储过程。我在
INSERT
查询上方添加了
begintransaction
命令,以便在出现问题时启用
rollback
。启动大容量插入时,它锁定了整个表,其他用户无法在同一个表上执行
SELECT

我不明白为什么SQL Server会锁定整个表,即使是
SELECT


我正在使用SQLServer2005Express。这是这个版本的问题还是在2008年仍然存在?如何克服这种情况写入程序不应阻止读卡器

您有一个打开的事务。这意味着SQL Server需要保留表的状态,并且您正在进行的任何更改都是“脏的”且未提交的

如果您从当前正在使用开放(显式)事务更改的表中选择
,则
选择将等待,直到该表处于稳定状态且事务已提交或回滚

若要解决此问题,请不要在进程中指定。写入程序不应阻止读卡器

这仅适用于以下情况:所有其他隔离级别都要求读卡器阻止写操作,写入器阻止读卡器(不考虑脏读操作,因为它们是而且永远不应该使用)。如果需要此行为,则使用行版本控制(链接包含解决方案)

为什么大容量插入会锁定整个表

这实际上可能是真的,也可能不是真的。行为由您控制:

TABLOCK

指定在的持续时间内获取表级锁 批量导入操作。可以通过以下方式同时加载表: 如果表没有索引并且指定了TABLOCK,则会有多个客户端。 默认情况下,锁定行为由表选项
table确定
锁定批量装载

有关更多详细信息,请阅读产品规格: