Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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 将输出插入到具有ROWLOCK的表中_Sql Server - Fatal编程技术网

Sql server 将输出插入到具有ROWLOCK的表中

Sql server 将输出插入到具有ROWLOCK的表中,sql-server,Sql Server,我有一个临时表a,其中包含100K项,我需要将它们插入另一个表B中,因此我使用以下方法将它们分批插入表B中,以避免阻塞该表: WHILE EXISTS (SELECT TOP 1 * FROM @A) BEGIN DELETE TOP (1000) TMP OUTPUT DELETED.FieldA, DELETED.FieldB INTO [dbo].[TableB] ([FieldA] ,[FieldB]) FROM @A TMP END 这可以正常工作

我有一个临时表a,其中包含100K项,我需要将它们插入另一个表B中,因此我使用以下方法将它们分批插入表B中,以避免阻塞该表:

WHILE EXISTS (SELECT TOP 1 * FROM @A)
BEGIN
    DELETE TOP (1000) TMP 
    OUTPUT DELETED.FieldA, DELETED.FieldB
    INTO [dbo].[TableB] ([FieldA] ,[FieldB]) 
    FROM @A TMP
END
这可以正常工作,但我想知道在插入表B时,是否有方法使用ROWLOCK指定表提示

像这样

WHILE EXISTS (SELECT TOP 1 * FROM @A)
BEGIN
    DELETE TOP (1000) TMP 
    OUTPUT DELETED.FieldA, DELETED.FieldB
    INTO [dbo].[TableB] WITH (ROWLOCK) ([FieldA] ,[FieldB]) 
    FROM @A TMP
END

它现在不允许我这样做。

您能告诉我们为什么要这样做吗?我正在尝试在插入到表时避免页面锁定。