Если ваша база 1С на MS SQL Server тормозит, зависает или требует ежедневной перезагрузки — скорее всего, проблема в фрагментированных индексах и устаревшей статистике. Это особенно актуально при активной работе: проводка документов, печать отчётов, обмен с сайтом и т.п.
Хорошая новость: всё это можно автоматизировать. Достаточно один раз настроить ночное задание — и база будет «сама чиниться» без участия человека.
Зачем это нужно?
- Индексы фрагментируются при частых INSERT/UPDATE/DELETE.
- SQL Server теряет представление о распределении данных (статистика устаревает).
- Запросы от 1С начинают выполняться медленно — пользователи жалуются.
Что делаем?
Каждую ночь в нерабочее время:
- Обновляем статистику по всем таблицам.
- Перестраиваем все индексы.
Пошаговая инструкция
1. Откройте SQL Server Management Studio (SSMS)
Если не установлен — скачайте бесплатно с официального сайта Microsoft.
2. Убедитесь, что запущена служба SQL Server Agent
Без неё задания не будут работать. Проверьте в «Службах Windows».
3. Создайте новое задание (Job)
- В SSMS: раскройте
SQL Server Agent → Jobs. - Правой кнопкой → New Job…
- Назовите, например:
1C_Nightly_Maintenance.
4. Добавьте шаг выполнения
Во вкладке Steps нажмите New… и вставьте следующий SQL-скрипт (не забудьте заменить Your_1C_Database_Name на имя вашей базы!):
-- ЗАМЕНИТЕ 'Your_1C_Database_Name' на реальное имя вашей базы!
USE [Your_1C_Database_Name];
GO
-- Обновить статистики
EXEC sp_updatestats;
GO
-- Перестроить все индексы
DECLARE @TableName VARCHAR(255)
DECLARE @SQL NVARCHAR(500)
DECLARE TableCursor CURSOR FOR
SELECT TABLE_SCHEMA + '.' + TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
OPEN TableCursor
FETCH NEXT FROM TableCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = 'ALTER INDEX ALL ON ' + @TableName + ' REBUILD'
EXEC sp_executesql @SQL
FETCH NEXT FROM TableCursor INTO @TableName
END
CLOSE TableCursor
DEALLOCATE TableCursor
GO
5. Настройте расписание
Во вкладке Schedules создайте новое — например, ежедневно в 02:00 ночи.
6. Готово!
Теперь каждую ночь MS SQL будет автоматически оптимизировать вашу базу 1С.
Важные предупреждения
- Выполняйте только в нерабочее время! Перестройка блокирует таблицы.
- Если база очень большая (>50 ГБ), перестройка может занять часы. В таком случае лучше использовать дифференцированный подход (перестраивать только сильно фрагментированные индексы).
- Убедитесь, что на диске достаточно свободного места — REBUILD временно удваивает размер индекса.
Альтернатива: Maintenance Plan
Если не хотите писать код — используйте встроенный Maintenance Plan Wizard в SSMS:
Management → Maintenance Plans → New Maintenance Plan.
Выберите задачи: Rebuild Index Task и Update Statistics Task. Назначьте расписание — и всё готово.
Почему это работает?
Этот «костыль» решает 80% проблем с производительностью 1С на MS SQL. Многие компании годами страдают от тормозов, не зная, что нужно просто… почистить индексы раз в сутки.
Можно ли на этом зарабатывать?
Да! Предложите услугу «Аудит и настройка автоматической оптимизации 1С» за 3000–5000 ₽. Это:
- Быстро (30 минут работы)
- Видимый результат (база перестаёт тормозить)
- Повод для дальнейшей поддержки
Удачи в оптимизации! А если база всё ещё тормозит — смотрите на диск (SSD?), память (16+ ГБ?) и настройки SQL (MAXDOP = 1!).
Комментарии
Пока нет комментариев. Будьте первым!