К статье
Практический материал

Администрирование · 12 мин

Как работает SQL Server с 1С: устройство связки и практическая настройка

Как устроена связка 1С и SQL Server: хранение данных, механизм запросов, план обслуживания, типичные ошибки и способы ускорить работу базы.

Клиент-серверный режим — стандартный способ работы 1С в компаниях, где с базой одновременно работают более 5–10 пользователей. В этой схеме платформа 1С не хранит данные в файлах напрямую: вся информация лежит в базе данных Microsoft SQL Server, а сервер 1С выступает посредником между пользователями и СУБД. Понимание того, как устроена эта связка, помогает грамотно выбирать оборудование, настраивать обслуживание и находить причины «тормозов».

Ключевая особенность архитектуры — 1С хранит данные в SQL Server в собственном внутреннем формате. Имена таблиц и полей генерируются автоматически и не соответствуют именам объектов конфигурации. Напрямую читать или тем более менять данные в таблицах SQL нельзя: вся логика, целостность и права доступа обеспечиваются только через механизмы платформы.

Ниже разобрано, как именно сервер 1С обращается к SQL Server, какие настройки критичны для производительности, как организовать регламентное обслуживание и какие ошибки администраторов чаще всего приводят к проблемам.

Как устроена трёхзвенная архитектура 1С и SQL Server

Связка состоит из трёх уровней. Первый — клиентское приложение (тонкий, толстый или веб-клиент), которое показывает интерфейс пользователю и не обращается к данным напрямую. Второй — сервер 1С:Предприятия: он выполняет код конфигурации, проверяет права, управляет транзакциями и формирует запросы к базе. Третий уровень — SQL Server, который физически хранит таблицы, индексы и журнал транзакций.

Когда пользователь проводит документ, сервер 1С преобразует встроенный язык запросов 1С в SQL-команды, открывает транзакцию в СУБД, записывает изменения в таблицы и фиксирует результат. При чтении данных происходит обратное: SQL Server возвращает набор строк, а сервер 1С превращает его в объекты конфигурации — документы, справочники, записи регистров.

Такое разделение даёт два практических следствия. Во-первых, узким местом может оказаться любой из уровней: медленная сеть между клиентом и сервером 1С, нехватка памяти на сервере приложений или перегруженные диски SQL Server. Во-вторых, диагностику всегда стоит начинать с определения, на каком уровне теряется время, — иначе легко «лечить» не тот компонент.

Как 1С хранит данные в базе SQL Server

При создании информационной базы через консоль кластера платформа автоматически генерирует структуру таблиц. Каждому объекту конфигурации соответствует одна или несколько таблиц: у документа есть таблица шапки и таблицы табличных частей, у регистра накопления — таблица итогов и таблица движений. Имена формируются по внутренним идентификаторам, поэтому ориентироваться в них без специальных инструментов сложно.

Файловая структура базы данных стандартна для SQL Server: основной файл данных (mdf), журнал транзакций (ldf) и служебная база tempdb. Журнал транзакций в связке с 1С растёт особенно активно при массовых проведениях, загрузках и перепроведении — поэтому модель восстановления и регулярное обрезание журнала критичны.

Дополнительно платформа хранит в базе служебные таблицы: очереди фоновых заданий, сеансы, блокировки, версии конфигурации. Их повреждение — частая причина ситуаций, когда база «не открывается», хотя пользовательские данные целы.

Какие настройки SQL Server важны для 1С

База 1С предъявляет к СУБД несколько конкретных требований. Их нарушение — самая частая причина медленной работы и ошибок, которые сложно диагностировать.

  • Модель восстановления. Для рабочих баз обычно выбирают Simple (простая), если нет необходимости восстанавливаться на произвольный момент времени. Модель Full требует регулярного резервного копирования журнала, иначе ldf-файл разрастётся и займёт весь диск.
  • Память SQL Server. Параметр max server memory нужно ограничить, оставив операционной системе и другим службам достаточный объём. Без ограничения SQL Server может занять почти всю память и вызвать подкачку.
  • Tempdb. Рекомендуется несколько файлов tempdb одинакового размера на быстром диске — 1С активно использует временные таблицы при построении отчётов и выполнении запросов.
  • Авторасширение файлов. Приращение в процентах — типичная ошибка: лучше задавать фиксированный прирост в мегабайтах, иначе на больших базах расширение файлов будет периодически «подвешивать» работу.
  • Совместимость и параметры базы. Уровень совместимости, настройки параллелизма и параметр AUTO_UPDATE_STATISTICS влияют на планы выполнения запросов 1С.

Отдельно стоит вопрос антивируса: каталоги с файлами баз данных и журналов необходимо исключить из проверки в реальном времени, иначе каждая операция записи будет проходить через сканер, что заметно снижает производительность.

Как организовать регламентное обслуживание базы

Без регулярного обслуживания база 1С на SQL Server деградирует предсказуемо: устаревает статистика, фрагментируются индексы, раздувается журнал. Запросы, которые раньше выполнялись за доли секунды, начинают занимать минуты, и пользователи жалуются на «тормоза» без видимой причины.

Минимальный набор регламентных операций включает: обновление статистики, перестроение или реорганизацию индексов, очистку процедурного кэша при необходимости и резервное копирование. Для этих задач удобно использовать планы обслуживания SQL Server или скрипты, запускаемые через агент SQL Server в нерабочие часы.

Базовый план обслуживания
  1. 1
    Настройте ежедневное резервное копирование базы и проверьте, что копии реально создаются и читаются
  2. 2
    Раз в неделю запускайте обновление статистики по всем таблицам базы 1С
  3. 3
    По мере фрагментации выполняйте перестроение индексов (обычно раз в неделю в нерабочее время)
  4. 4
    Контролируйте размер журнала транзакций и свободное место на дисках
  5. 5
    Периодически выполняйте тестирование и исправление базы штатными средствами 1С на копии

Платформа 1С также умеет выполнять часть обслуживания сама: в свойствах информационной базы в консоли кластера есть настройка регламентных операций СУБД. Однако на больших базах администраторы чаще управляют этим вручную, чтобы точно контролировать расписание и нагрузку.

Почему база тормозит и как найти причину

Замедление работы 1С на SQL Server почти всегда сводится к одной из нескольких групп причин. Сначала стоит определить характер проблемы: постоянная медленность, периодические «подвисания» или медленная работа конкретных операций. От этого зависит направление диагностики.

Медленно у всех и всегдаПроблема инфраструктуры

Загрузка дисков SQL Server, нехватка памяти, устаревшая статистика

Периодические зависанияБлокировки или регламентные задачи

Взаимоблокировки, конкуренция за ресурсы, запуск обслуживания в рабочее время

Медленные отдельные отчётыНеоптимальные запросы

План выполнения запроса, отсутствие подходящих индексов, код конфигурации

Растёт диск с журналомМодель восстановления Full

Выполняется ли резервное копирование журнала транзакций

Основной инструмент диагностики — технологический журнал платформы 1С, который фиксирует длительные вызовы СУБД, блокировки и ошибки. Его данные дополняют динамические административные представления SQL Server (sys.dm_exec_requests, sys.dm_tran_locks) и счётчики производительности дисковой подсистемы. Связка «техножурнал + мониторинг SQL» позволяет точно установить, какой запрос и почему работает медленно.

Частый источник проблем — избыточные блокировки при одновременной работе пользователей. В управляемом режиме блокировок (по умолчанию в современных конфигурациях) конкуренция ниже, чем в автоматическом, но ошибки в коде — например, проведение больших пакетов документов в одной транзакции — всё равно способны заблокировать работу целого отдела.

Типичные ошибки администрирования
01
Не ограничена память SQL Server — СУБД вытесняет ОС и сервер 1С в подкачку, всё начинает работать рывками
02
Резервные копии создаются, но никогда не проверяются восстановлением — в критический момент копия оказывается непригодной
03
Обслуживание (индексы, статистика) запускается в рабочее время — пользователи получают блокировки и таймауты
04
Антивирус сканирует файлы mdf и ldf — каждая запись в базу замедляется
05
Обновление платформы и конфигурации выполняется без копии — при ошибке нет пути отката

Как безопасно выполнять обновления и массовые операции

Обновление конфигурации в клиент-серверном режиме изменяет структуру таблиц SQL Server: добавляются поля, пересчитываются итоги, реструктуризируются регистры. На больших базах это может занять часы, и прерывание процесса опасно. Поэтому любое обновление начинается с полной резервной копии и выполняется в монопольном режиме, когда пользователи отключены.

Массовые загрузки и перепроведение документов — вторая группа рискованных операций. Они интенсивно пишут в журнал транзакций и создают длинные транзакции, которые держат блокировки. Безопасная практика — разбивать обработку на порции с фиксацией транзакций и выполнять её в нерабочее время.

Маршрут решения

Как выбрать действие

Нужно обновить конфигурацию на рабочей базеСделайте полную копию, завершите сеансы пользователей, обновите сначала копию и проверьте результат
База стала медленно работать после длительного периода без обслуживанияОбновите статистику, проверьте фрагментацию индексов и проанализируйте техножурнал на длительные запросы
Заканчивается место на диске с журналом транзакцийПроверьте модель восстановления и расписание резервного копирования журнала, не удаляйте ldf-файл вручную
Пользователи жалуются на взаимоблокировкиСоберите события TLOCK и TDEADLOCK в техножурнале и найдите конфликтующие операции в коде
Контрольные точки

Как проверить результат

Резервное копирование
Норма

Копия создана и тестово восстанавливается на отдельном сервере

Тревожный признак

Файл копии есть, но восстановление завершается ошибкой

Скорость типовых операций
Норма

Проведение документа и открытие списков занимают привычное время

Тревожный признак

После обслуживания или обновления операции стали заметно дольше

Размер журнала транзакций
Норма

Размер ldf стабилен и не растёт неделями

Тревожный признак

Журнал постоянно увеличивается и занимает значительную часть диска

Свободная память сервера
Норма

ОС и службам остаётся достаточный резерв памяти

Тревожный признак

Почти вся память занята sqlservr и rphost, активен файл подкачки

FAQ: частые вопросы о связке 1С и SQL Server

Можно ли читать данные 1С напрямую из SQL для отчётов?

Технически чтение возможно, но структура таблиц не документирована и меняется при обновлении конфигурации, поэтому такие отчёты хрупки. Для аналитики безопаснее использовать штатные механизмы: СКД, запросы 1С, публикацию данных через веб-сервисы или выгрузку в отдельное аналитическое хранилище.

Какую редакцию SQL Server выбрать для 1С?

Выбор зависит от размера базы и требований к отказоустойчивости. Для небольших баз может хватить Express с её ограничениями по памяти и размеру базы, для рабочих систем чаще используют Standard, а Enterprise нужен там, где требуются продвинутые функции вроде сжатия и Always On. Конкретные лимиты редакций стоит сверять с актуальной документацией Microsoft.

Почему после перезапуска SQL Server первая работа с 1С медленная?

После рестарта буферный кэш и кэш процедур пусты: данные читаются с диска, а планы запросов компилируются заново. Это нормальное поведение — по мере работы кэш «прогревается», и скорость восстанавливается. Если медленная работа сохраняется долго, причина уже в другом.

Нужно ли запускать тестирование и исправление в конфигураторе на SQL-базе?

Для клиент-серверных баз основная проверка физической целостности выполняется средствами SQL Server (DBCC CHECKDB), а тестирование и исправление 1С проверяет логическую целостность прикладных данных. Его имеет смысл запускать периодически на копии базы и обязательно — при подозрении на рассогласование итогов или после аварийных сбоев.

Что делать, если рабочий процесс rphost съедает всю память?

Настройте в свойствах кластера ограничения: объём памяти на процесс, число соединений и период перезапуска рабочих процессов. Плавный перезапуск rphost по расписанию — стандартная практика, которая сдерживает утечки памяти без остановки работы пользователей.

Можно ли перенести базу 1С на другой сервер SQL?

Да, стандартный способ — резервное копирование базы средствами SQL Server и восстановление на новом сервере с последующим изменением параметров подключения в консоли кластера 1С. Альтернатива — выгрузка в dt через конфигуратор, но для больших баз это значительно дольше.

Итог

Что важно запомнить

SQL Server в связке с 1С — не «чёрный ящик», а полноценный компонент, требующий настройки и обслуживания. Ограничьте память СУБД, следите за журналом транзакций, регулярно обновляйте статистику и индексы, проверяйте резервные копии восстановлением, а диагностику тормозов начинайте с техножурнала и мониторинга блокировок. Данные в таблицах никогда не меняйте напрямую — только через платформу.