Имя: Пароль:
1C
1С v8
SQL. Как понять что именно вызывает блокировку в базе?
,
0 Aswed
 
30.11.21
11:02
САБЖ. Есть база. 55 гигов, крутится на SQL.
Периодически выскакивает блокировка. Не могу понять что именно её вызывает. С помощью запроса:

DECLARE @Table TABLE( SPID INT, Status VARCHAR(MAX), LOGIN VARCHAR(MAX), HostName VARCHAR(MAX), BlkBy VARCHAR(MAX), DBName VARCHAR(MAX), Command VARCHAR(MAX), CPUTime INT, DiskIO INT, LastBatch VARCHAR(MAX), ProgramName VARCHAR(MAX), SPID_1 INT, REQUESTID INT)

INSERT INTO @Table EXEC sp_who2

SELECT DISTINCT BlkBy FROM @Table

SELECT * FROM @Table

Нахожу её и киляю.
Но как понять что именно в самой базе 1С её вызывает? Уже всю голову сломал.
1 ДенисЧ
 
30.11.21
11:04
LOGIN , Command , LastBatch
Ничего не говорят?
2 Aswed
 
30.11.21
11:06
(1) Неа) В первые вижу)
3 mikecool
 
30.11.21
11:07
(0) на курсы эксперта пора ) можно тех жкрнал на базу напустить, глядишь - там понятно будет
4 Aswed
 
30.11.21
11:07
А если серьёзно)
В логин висит пользователь "sa", что логично
В команде висит какой то запрос
В ласт бач текущее время.
5 Aswed
 
30.11.21
11:08
(3) Пробовал. Он безумно тормозит базу. Пришлось экстренно отключать.
База старючая АльфаАвто 4.1. Она и так не подарок от Раруса, а ещё переписана вхламень разными франчами.
6 Партийный членовоз
 
30.11.21
11:17
(5) настраивай blocked process report, потом по именам объектов метаданных в запросе, который виновник, настраивай отбор по контексту в ТЖ типа такого:

<event>
<eq property="Name" value="DBMSSQL"/>
<like property="Sql" value="%Reference5774%"/>
</event>
7 Kassern
 
30.11.21
11:19
(5) "Он безумно тормозит базу." ну так настройте его точечно, тогда не будет так тормозить
8 mistеr
 
30.11.21
11:21
(4) А если серьезно, варианта ровно два: либо позвать специалиста, либо потратить время и самому стать немного специалистом. Выбирай.

Хотя бы сообщение об ошибке покажи, для приличия.
9 МихаилМ
 
30.11.21
11:27
10 Aswed
 
30.11.21
11:27
(8) Я подумаю над этим, может стану) Пока не было необходимости в подобном копании.

Как будет ошибка скопипащу сюда конечно же.
11 Aswed
 
30.11.21
11:42
(9) Спасибо. Именно то что нужно!
Настроил, буду смотреть
12 ManyakRus
 
30.11.21
12:51
не надо ничё понимать - 1С выдаёт ошибку "Ошибка транзакции..." и пишет имя модуля и номер строки кода - в этом месте и тормозит, в этом месте надо оптимизировать :-)
13 fisher
 
30.11.21
13:01
(4) Если виновник блокировки прям сейчас ее блокирует, то вычислить его никакой проблемы нет - в консоли кластера есть инфа о номерах процессов СУБД, которые сеансы прям сейчас юзают.
14 DrZombi
 
гуру
30.11.21
13:20
(0) Что за конфигурация?
Как объявлены блокировки?
    Режим управления блокировкой данных в транзакции по умолчанию

Укажи блокировки у всех справочников, регистрах и др. метаданных: Управляемый

...Все, часть проблем решатся, другие проблемы будут, но все в пределе очередности... :)
15 Aswed
 
30.11.21
13:30
(12) Там ругань тупо на SQL, без указания каких либо отсылок к 1С
(13) Как посмотреть? Там же блокировках только номер соединения.
(14) Альфа-Авто 4.1
16 H A D G E H O G s
 
30.11.21
13:35
(15) по большому значению "количество захваченных обьектов субд"
17 Aswed
 
30.11.21
13:44
(16) Теперь понял. Спасибо.
18 fisher
 
30.11.21
14:07
(15) Я обычно не скриптом смотрю, а тупо мониторингом активности на сервере СУБД, где список активных процессов.
Там сразу все видно, и даже в отдельной колонке отображается признак "вредителя" - единичка для сеанса СУБД, который является корневым в цепочке взаимоблокировок.
А в списке сеансов кластера 1С в колонке "Соединение СУБД" выводится номер активного сеанса СУБД. Часто консоли кластера достаточно - сортируешь по убыванию "Время вызова СУБД (текущее)" и верхний сеанс с большой вероятностью является "вредителем". На сервере СУБД больше смотришь, если интересно разобраться в деталях происходящего. Кто кого на чем ждал.
19 Aswed
 
30.11.21
15:47
(18) А потом как выяснить из-за какого куска кода эта блокировка возникает? Так то да, увидел грохнул.
Но потом то опять будет блокировка вылазить.
20 Kassern
 
30.11.21
15:50
(19) а тут уже нужно читать ТЖ найти в нем что этот процесс делал в определенное время.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.