2016-12-07 14 views
0

SQL Serverテーブルをビジー状態のテーブルに更新する必要があります。しかし、変更を行うまでは、他のプロセスがそのテーブルの更新を更新または選択できないようにしたいと思います。トランザクションがロックを解除するまで、他のプロセスからSQL Serverテーブルをロックする方法はありますか?

しかし、他のすべてのリクエストが失敗しないようにするには、テーブルのロックを解除するまで待ち行列に入れておきます。

実行時にほかの誰もその時間を更新しないように、他のプロセスのためにテーブルをロックするにはどうすればよいですか?

+1

使用を ''試してみてください。 http://stackoverflow.com/a/5114082/2333499 – SqlZim

+0

毎回tablockxヒントを設定するのではなく、一度設定できるトランザクション分離レベルを調べる必要があります – Matt

答えて

1

は(TABLOCKX)と、この

BEGIN TRANSACTION; 

-- Add exclusive lock on a table "i.e your_table" until the end of your transaction 

SELECT ... 
FROM your_table 
WITH (TABLOCKX) 

-- execute the update on "your_table" your the only one that can now 

-- Save the change you made during the transaction and release the table for other transactions 
COMMIT TRANSACTION; 
0

SQL-Serverには、テーブルに排他ロックを設定できます。アクセスを必要とする他のプロセスはハングアップしたままになります。

関連する問題