SQL Server – 如何锁定表,直到存储过程完成

我想这样做:

create procedure A as
  lock table a
  -- do some stuff unrelated to a to prepare to update a
  -- update a
  unlock table a
  return table b

是这样的可能吗?

最终我想要我的SQL服务器报告服务报告调用过程A,然后只显示表a过程完成后。 (我不能改变程序A来返回表a)。

需要这个答案自己和从link provided by David Moye,决定这一点,并认为这可能是有用的同样的问题的其他人:

CREATE PROCEDURE ...
AS
BEGIN
  BEGIN TRANSACTION

  -- lock table "a" till end of transaction
  SELECT ...
  FROM a
  WITH (TABLOCK, HOLDLOCK)
  WHERE ...

  -- do some other stuff (including inserting/updating table "a")



  -- release lock
  COMMIT TRANSACTION
END
翻译自:https://stackoverflow.com/questions/3662766/sql-server-how-to-lock-a-table-until-a-stored-procedure-finishes

转载注明原文:SQL Server – 如何锁定表,直到存储过程完成