sql标识插入中断

sql标识插入中断,sql,sql-server,Sql,Sql Server,这可能是一个显而易见的问题。 我有一个运行游标的sql存储过程 光标将向表中插入一定数量的记录。 问题是,假设光标运行1000条insert语句,这些记录必须相互跟随。如果其他人在光标运行时运行insert,它将在光标运行的两条记录之间占用一条记录 有谁能给我一些提示,以确保所有光标插入都相互跟随 请注意,我的光标可能会进行50000次插入。这意味着需要一段时间来完成所有的插入。因此,在执行插入操作时,不能中断该表。您可以尝试以下操作: INSERT INTO YourTable WITH (T

这可能是一个显而易见的问题。 我有一个运行游标的sql存储过程

光标将向表中插入一定数量的记录。 问题是,假设光标运行1000条insert语句,这些记录必须相互跟随。如果其他人在光标运行时运行insert,它将在光标运行的两条记录之间占用一条记录

有谁能给我一些提示,以确保所有光标插入都相互跟随

请注意,我的光标可能会进行50000次插入。这意味着需要一段时间来完成所有的插入。因此,在执行插入操作时,不能中断该表。

您可以尝试以下操作:

INSERT INTO YourTable WITH (TABLOCK)
...
...
...

您的意思是使用identity属性插入到主列中的值必须是连续的吗?如果您在单个事务中对一个表进行了5000多次“操作”,SQL Server将通过一种称为锁升级的机制以独占方式锁定整个表。这意味着:在事务提交(或回滚)之前,没有人可以从该表中进行选择hi raj,是的,它必须是连续的,不能在这些记录之间插入“其他”记录。感谢您的回复。不过我看到一个问题,插入将在光标内。所以基本上是自己插入多个。不客气。如果答案对你有帮助,别忘了接受。
BEGIN TRANSACTION t_Transaction

BEGIN TRY

  INSERT INTO  Table
 SELECT * 
 FROM tablx
  WITH (HOLDLOCK)


 COMMIT t_Transaction

END TRY 

BEGIN CATCH
  ROLLBACK t_Transaction
END CATCH