|
Изучаю транзакционные блокировки
| ☑ |
0
fjay69
24.06.20
✎
17:07
|
Добрый день. Я в тупике. Если есть специалисты по MS SQL, прошу помочь.
Насколько я знаю, текущие блокировки SQL можно посмотреть в таблице sys.dm_tran_locks
Как я создаю блокировку? Выполняю следующий код в тестовой базе:
НачатьТранзакцию();
БлокировкаДанных = Новый БлокировкаДанных;
ЭлементБлокировкиДанных = БлокировкаДанных.Добавить("Справочник.Спр1");
ЭлементБлокировкиДанных.УстановитьЗначение("Ссылка", Справочники.Спр1.НайтиПоНаименованию("Тест"));
ЭлементБлокировкиДанных.Режим = РежимБлокировкиДанных.Исключительный;
БлокировкаДанных.Заблокировать();
Предупреждение("Пока открыто это предупреждение, элемент справочника заблокирован");
Как я проверяю блокировку? Запускаю второй сеанс и пробую модифицировать элемент.
Спустя 20 сек после нажатия на кнопку записи, 1С выдаёт "Превышено максимальное время ожидания блокировки".
Значит, блокировка есть и я должен видеть её в sys.dm_tran_locks. Но там только записи с resource_type = DATABASE.
Явно не то, что мне нужно.
Что я делаю не так? Может не так настроил SQL или 1С?
|
|
1
H A D G E H O G s
24.06.20
✎
17:10
|
Это не блокировка SQL, это блокировка на уровне сервера 1С.
|
|
2
Tihon_aka_kot
24.06.20
✎
17:11
|
(0) Может запись появиться когда ты отпустишь блокировку?
|
|
3
Trier
24.06.20
✎
17:17
|
(0) В твоем случае сработала управляемая блокировка 1С, до скуля даже дело не дошло
Просто проведи любой документ и поставь точку останова в конце обработки проведения.
|
|
4
fjay69
24.06.20
✎
17:21
|
(3) Спасибо, так и сделаю. Про управляемые блокировки почитаю.
|
|
5
fjay69
24.06.20
✎
17:36
|
Судя по http://catalog.mista.ru/public/557477/ , блокировки 1С можно вытащить только из технологического журнала.
|
|
6
vde69
24.06.20
✎
18:18
|
(5) зачем тебе вытаскивать блокировки 1с ?
|
|
7
vde69
24.06.20
✎
18:20
|
может ты путаешь с "уровень изоляции SQL" ???? почитай про это... и посмотри какие из них использует 1с в транзакции, это куда важнее чем пытатся понять управляемые блокировки...
|
|