Изучаю транзакционные блокировки
☑
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с в транзакции, это куда важнее чем пытатся понять управляемые блокировки...
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.