SQL Server Profiler и Activity Monitor: как найти тормозящие запросы 1С
- 1С начинает сильно зависать в произвольные моменты времени.
- Загрузка процессора на сервере СУБД подскакивает до 100%.
- Пользователи жалуются на долгое проведение простых документов или зависание отчетов.
- Администратору нужно понять, какой именно пользователь или отчет перегружает SQL Server.
Способ 1. Быстрый мониторинг через Activity Monitor (Монитор активности)
- Откройте SQL Server Management Studio (SSMS).
- Нажмите правой кнопкой мыши на имя сервера в дереве слева → выберите Activity Monitor (или нажмите Ctrl + Alt + A).
- Раскройте вкладку Active Expensive Queries (Активные ресурсоемкие запросы):
- Отсортируйте список по колонке CPU (ms/sec) или Duration (ms).
- В верхних строках будут самые «тяжелые» запросы, которые выполняются прямо сейчас.
- Нажмите правой кнопкой на строку с запросом → Show Execution Plan, чтобы увидеть текст запроса и проблемные таблицы 1С.
Способ 2. Трассировка долгих запросов через SQL Server Profiler
- В SSMS перейдите в меню: Tools (Сервис) → SQL Server Profiler.
- Подключитесь к серверу, выберите шаблон Standard.
- Перейдите на вкладку Events Selection (Выбор событий):
- Отметьте события:
RPC:CompletedиSQL:BatchCompleted. - Нажмите кнопку Column Filters... (Фильтры столбцов).
- Выберите Duration → Greater than or equal → укажите
5000(отбирать только запросы, выполняющиеся дольше 5 секунд). - Выберите DatabaseName → Like → укажите имя вашей базы 1С.
- Отметьте события:
- Нажмите Run. В окне в реальном времени начнут появляться только те запросы 1С, которые реально тормозят систему.
Частые вопросы (FAQ)
Сильно ли SQL Server Profiler нагружает сервер при работе?
Если не поставить фильтр по Duration или имени базы, профилировщик будет собирать миллионы событий и создаст ощутимую дополнительную нагрузку. С правильными фильтрами нагрузка минимальна.
Как по непонятному тексту запроса SQL понять, какой это документ в 1С?
Найдите в запросе имена таблиц (например, _Document123) и сопоставьте их через Конфигуратор или функцию ПолучитьСтруктуруХраненияБазыДанных().
Что такое Extended Events и почему Microsoft рекомендует их вместо Profiler?
Extended Events (Расширенные события) — это современный легковесный механизм мониторинга внутри самого SQL Server, пришедший на смену старому Profiler.
Что чаще всего является причиной долгих запросов в 1С?
Отсутствие индексов по реквизитам отбора, запросы в цикле, использование подзапросов в соединениях и неоптимальные отчеты без ограничения периода.