Я хочу заблокировать таблицу при выполнении процедуры хранилища.Как заблокировать таблицу во время операции
Будет ли это хорошим способом?
CREATE PROCEDUE sp_test
@tableName nvarchar(128)
AS
DECLARE @sql nvarchar(MAX) = 'SELECT * FROM ' + @tableName + 'WITH TABLOCK'
EXEC @sql
-- DO my operations
-- How Do I release the lock? or does it get release when the execution is done
Или есть лучший способ достичь этого.
Благодаря
Я не говорю, что вам это не нужно, но я бы ожидал серьезного нарушения конкуренции, если часто попадает в proc. Можете ли вы дать подробную информацию, зачем вам это нужно? –
Его не следует часто ударять чаще всего один раз. У нас есть хранимая процедура, которая позволит отслеживать изменения для конкретной таблицы. Когда эта процедура является вызовом, мы хотим заблокировать таблицу, чтобы никто не мог выполнять операцию DML в таблице. Как только процедура будет завершена, мы хотим освободить замок. Процедура не займет много времени. – pdiddy