Заблокируйте таблицу SQL-сервера на заданное время и проверьте, не заблокирована ли она.

Я хочу заблокировать таблицу на определенное время в SQL Server. Я использую С# на уровне кода. Как я могу этого добиться, мне также нужно проверить, заблокирована таблица или нет. У меня нет особых знаний о блокировке таблиц в SQL Server. Я хочу добиться этого, используя структуру сущности. Любая помощь горячо приветствуется.


person Madhur Maurya    schedule 18.10.2016    source источник
comment
stackoverflow .com/questions/25273157/   -  person Vincent    schedule 18.10.2016
comment
Это невозможно сделать с помощью чистой сущности-фреймворка. Вам придется использовать dao.   -  person Erik Philips    schedule 18.10.2016


Ответы (1)


Вы можете попробовать, как показано ниже.

using (var context = new YourContext())
    {
     using (var dbContextTransaction = context.Database.BeginTransaction())
     {
       //Lock the table during this transaction
       context.Database.ExecuteSqlCommand("SELECT 1 FROM YourTable WITH (TABLOCKX)
    WAITFOR DELAY '00:03:00'");

            //your work here

            dbContextTransaction.Commit();
      }
}

Примечание. Блокировка таблицы будет снята после выхода из блока BeginTransaction.

person Sampath    schedule 18.10.2016
comment
небольшая правка. Я должен быть dbContextTransaction.Commit() вместо scope.Commit(), а таблица в команде SQL должна быть заменена фактическим именем таблицы - person Madhur Maurya; 18.10.2016