Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Параллельные транзакции


Автор: MrNoob 6.8.2010, 14:10
Есть две транзакции, которые только вставляют записи в одну таблицу.
Эти транзакции запускаются параллельно, но мне нужно, чтобы они выполнялись последовательно. Т.е. в таблице появились сначала записи первой, а потом второй, а не вперемешку. 

Т.е. чтобы первая транзакция заблокировала таблицу на вставку новых записей... как-то так.

Помогите, пожалуйста. 

Заранее благодарю =)

Автор: VirusUZ 6.8.2010, 16:35
надо deny access  или  stored procedure

Автор: MrNoob 6.8.2010, 17:15
По поводу "надо deny access", это в смысле забрать права на таблицу, а в конце отдать?
А по поводу  "или  stored procedure" совсем не понятно, можно поподробней, пожалуйста.

Автор: kobra 8.8.2010, 18:58
Цитата(MrNoob @  6.8.2010,  14:10 Найти цитируемый пост)
Есть две транзакции, которые только вставляют записи в одну таблицу.

по подробнее пожалуста
Цитата(MrNoob @  6.8.2010,  14:10 Найти цитируемый пост)
Т.е. в таблице появились сначала записи первой, а потом второй, а не вперемешку. 

а если первая откатится?
Цитата(MrNoob @  6.8.2010,  17:15 Найти цитируемый пост)
А по поводу  "или  stored procedure" совсем не понятно, можно поподробней, пожалуйста. 

наверное имелос в виду запускать их из однои процедуры.

Автор: MrNoob 9.8.2010, 21:29
Цитата(kobra @  8.8.2010,  18:58 Найти цитируемый пост)

по подробнее пожалуста


Есть код примерно следующего содержания:
Код

открыть транзакцию
вставляем данные
закрыть транзакцию


Вторая транзакция аналогична, но данные вставляются другие.

И возникает следующая ситуация:
  запускается 1 транзакция
  во время работы этой транзакции запускается 2ая

В таблицу физически будут вставлены данные вперемешку из первой и второй транзакции, а мне хотелось, чтобы вторая транзакция дождалась выполнения первой.

Я понимаю, что пытаться привязываться к физическому размещению данных в БД плохо, но такую я придумал задачку=)

И с её решением мне помогли. Для блокировки я использую функцию sp_getapplock.

Всем спасибо за помощь. 




Автор: Akina 9.8.2010, 21:34
Цитата(MrNoob @  9.8.2010,  22:29 Найти цитируемый пост)
В таблицу физически будут вставлены данные вперемешку из первой и второй транзакции

Нет. Учите матчасть.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)