Если база данных СпрутМонитор внезапно начала сильно тормозить, важно оперативно выявить и устранить причину. Вот последовательность действий, которые помогут вам разобраться в проблеме и предпринять меры по ее устранению:
- Проверьте ресурсы сервера. Зайдите в диспетчер задач (Task Manager) или используйте «Performance Monitor» (
perfmon) на сервере, где развернут SQL Server. Особое внимание обратите на загрузку процессора (CPU), использование оперативной памяти (RAM), активность дисковой подсистемы (Disk I/O) и сетевой трафик. Если виден сильный дефицит ресурсов, это первая причина для разбирательств. - Посмотрите активные запросы. Выполните следующую команду в SQL Server Management Studio (SSMS):
sp_who2или
SELECT * FROM sys.dm_exec_requests WHERE status = 'running'Это покажет, какие запросы сейчас выполняются и занимают наибольшее время.
- Проверьте блокировки (Locks) и блокирующие запросы (Blocking). Долгие блокировки могут практически полностью «парализовать» базу. Используйте, например:
SELECT blocking_session_id AS BlockingSessionID, session_id AS VictimSessionID, wait_type, wait_time, wait_resource FROM sys.dm_os_waiting_tasks WHERE blocking_session_id IS NOT NULLЕсли есть блокирующие/зависшие транзакции — попробуйте отключить или завершить их.
- Изучите планы выполнения (Execution Plans) запросов. Плохо оптимизированные запросы или недавно изменённые планы могут вызвать резкое замедление. Профилируйте тяжелые запросы с помощью «SQL Profiler» или функций
sys.dm_exec_query_stats,sys.dm_exec_query_plan. - Проверьте показатели TempDB. Если TempDB переполнен или работает «на износ», это часто резко ухудшает производительность всех операций, где есть сортировки и временные таблицы.
- Свободно ли место на диске? Проверьте, достаточно ли свободного пространства для файлов базы, логов транзакций и TempDB. Переполнение любого из них вызывает замедление или остановку операций.
- Нет ли проблем с внешними подключениями и сетью? Иногда проблемы не в самой базе, а в сети или промежуточных сервисах.
- Была ли серьезная нагрузка или изменение? Вспомните, происходило ли в последнее время массовое обновление данных, создание больших индексов или выполнение тяжелых операций. Это влияет на производительность, пока процессы выполняются.
- Есть ли у вас бекап? Попробуйте определить момент, когда БД начала тормозить и восстановить последний бекап до этого момента.
- Посмотрите логи ошибок SQL Server. Иногда в журнале появляется информация о сбоях оборудования, ошибках чтения/записи или нехватке ресурсов. Журнал ошибок вы можете найти по этому пути:
C:\Program Files\Microsoft SQL Server\MSSQL[number].[name]\MSSQL\Log\где MSSQL[number].[name] — это номер экземпляра и его имя (например, MSSQL15.MSSQLSERVER для SQL Server 2019 экземпляра по умолчанию).
- Реиндексация и обновление статистики. На сильно используемых БД фрагментация индексов и устаревшая статистика могут замедлять работу. Выполните:
EXEC sp_updatestatsили запустите перестроение индексов например с помощью утилиты SQLIndexManager.
Если конкретная причина обнаружилась (например, большой «зависший» запрос, блокировки, нехватка места или ресурсов), устраните её: завершите тяжелую транзакцию, увеличьте дисковое пространство, добавьте памяти, исправьте неэффективные запросы или выполните техническое обслуживание БД.
Если причина не ясна или требуется срочная помощь — обратитесь за помощью к квалифицированному системному администратору или DBA, предоставив им всю собранную информацию. Если таких специалистов нет – можно попробовать воспользоваться утилитами автоматической диагностики и восстановления, например Stellar Repair.
Если выявить причину по-прежнему не удается, рассмотрите возможность перехода на чистую БД, опционально с сохранением наиболее важной информации. В СпрутМонитор для того, чтобы сохранить имена пользователей, параметры настроек профилей, и т.п необходимо перенести следующие таблицы:
dbo.SprutUsers
dbo.Users
dbo.Rules
dbo.Rules2
dbo.ProfileTimeTable
dbo.ProfileSettings
dbo.ProfileRules2
dbo.ProfileRules
dbo.ProfileComputerSettings
dbo.Licensing
dbo.Groups
dbo.Defaults
dbo.Computers
dbo.AdditionalUsers
dbo.AccountSettings
Для переноса данных из этих таблиц можно использовать SSMS, например по следующему алгоритму:
- ПКМ на исходной базе → Tasks → Generate Scripts
- Выбрать только нужные таблицы (по списку выше).
- В опциях выбрать “Schema and Data”.
- Сохранить или сразу выполнить скрипты для создания таблиц и данных в новой БД.
Перенос данных опционален и не требуется в большинстве случаев. Чистая база будет работать – будут созданы автоматически новые учетные записи пользователей, применены дефолтные правила. Но если вы хотите сохранить например группировку пользователей, категоризацию, профили настроек или правил – то имеет смысл рассмотреть перенос таблиц из списка выше.







