Администрирование · 10 мин
Как работает 1С с SQL Server: устройство связки и практика администрирования
Как 1С работает с SQL Server: архитектура связки, хранение данных, настройка сервера, обслуживание баз, типичные ошибки и способы ускорения работы.
В клиент-серверном режиме 1С не хранит данные в файлах на диске пользователя, а размещает всю информационную базу внутри базы данных Microsoft SQL Server. Платформа 1С выступает посредником: она принимает запросы от клиентских приложений, преобразует их в SQL-запросы и передаёт серверу баз данных, а результат возвращает пользователю в привычном виде — документах, справочниках и отчётах.
Такая схема снимает главное ограничение файлового режима: десятки и сотни пользователей могут одновременно проводить документы без блокировки всей базы. SQL Server управляет транзакциями, конкурентным доступом и целостностью данных, а сервер 1С — бизнес-логикой, правами доступа и кластеризацией нагрузки.
Понимание того, как устроена эта связка, критично для администратора: большинство проблем с производительностью 1С — это на самом деле проблемы SQL Server: нехватка памяти, фрагментированные индексы, устаревшая статистика или неверно настроенная tempdb. Ниже разобраны архитектура, настройка, обслуживание и диагностика типовых сбоев.
Архитектура связки: кто за что отвечает
Рабочая схема состоит из трёх уровней. Первый — клиентское приложение (тонкий, толстый или веб-клиент), которое показывает интерфейс и отправляет запросы. Второй — сервер 1С:Предприятия, который исполняет код конфигурации, проверяет права, управляет сеансами и формирует обращения к базе. Третий — SQL Server, который физически хранит таблицы и выполняет запросы.
Важно понимать: структура таблиц в SQL Server не совпадает с логической структурой конфигурации. Документ «Реализация товаров» физически размазан по нескольким таблицам с техническими именами вида _Document123, а сопоставление хранится в служебных таблицах. Поэтому прямая правка данных в SQL в обход платформы категорически запрещена — это нарушает внутренние связи и приводит к разрушению базы.
Блокировки тоже делятся на два уровня. Управляемые блокировки накладывает сама платформа через менеджер транзакций, а СУБД дополнительно использует собственные механизмы (строковые и страничные блокировки). В современных конфигурациях рекомендуется режим управляемых блокировок — он снижает число взаимоблокировок при параллельной работе.
Как развернуть базу 1С на SQL Server
Развёртывание начинается с установки SQL Server. Для 1С подходят редакции Standard и Enterprise; Express ограничена по памяти и размеру базы, поэтому годится только для тестов и очень маленьких внедрений. При установке важно выбрать правильный collation (параметры сортировки) — для 1С требуется Cyrillic_General_CI_AS, иначе база не создастся или будет работать некорректно.
- 1Установите SQL Server с collation Cyrillic_General_CI_AS и включите смешанную или Windows-аутентификацию
- 2Установите сервер 1С:Предприятия и убедитесь, что агент кластера запущен
- 3В консоли кластера серверов 1С создайте новую информационную базу, указав сервер СУБД, имя базы и учётные данные
- 4Загрузите конфигурацию из dt-файла или пустую конфигурацию через конфигуратор
- 5Проверьте вход пользователя и выполните первичное тестирование и исправление базы
База создаётся именно через консоль кластера 1С или конфигуратор, а не средствами SQL Server. Платформа сама формирует служебные таблицы, параметры и структуру. Созданная вручную в Management Studio пустая база без инициализации платформой работать не будет.
Ключевые настройки SQL Server под 1С
После установки SQL Server нуждается в настройке — конфигурация по умолчанию рассчитана на «средний» сервер и не учитывает специфику 1С. Первое, что проверяют, — ограничение памяти (max server memory). Без него SQL Server постепенно забирает почти всю оперативную память, оставляя системе и серверу 1С крохи, если они размещены на той же машине.
Второй критичный объект — tempdb. Платформа 1С активно использует временные таблицы при построении отчётов и сложных запросов. Рекомендуется создать несколько файлов tempdb (по числу физических ядер процессора, но не более восьми) одинакового размера с заранее заданным приращением, чтобы избежать конкуренции за служебные страницы.
Также стоит отключить автосжатие базы (autoshrink), выставить разумный начальный размер файлов и приращение в мегабайтах, а не в процентах. Автосжатие вызывает сильную фрагментацию и резкие провалы производительности в момент срабатывания.
Регулярное обслуживание: индексы, статистика, бэкапы
Без обслуживания база 1С на SQL Server деградирует предсказуемо: растут таблицы, фрагментируются индексы, устаревает статистика, и оптимизатор начинает строить плохие планы запросов. Отчёт, который формировался за секунды, начинает выполняться минутами, хотя объём данных вырос незначительно.
Минимальный регламент обслуживания включает три операции: перестроение или реорганизацию индексов, обновление статистики и очистку процедурного кэша. Их можно выполнять вручную через план обслуживания (Maintenance Plan) или скриптами по расписанию — обычно ночью, когда нагрузка минимальна.
EXEC sp_MSforeachtable 'UPDATE STATISTICS ? WITH FULLSCAN';Резервное копирование настраивается средствами SQL Server: полная копия ежедневно, разностные — несколько раз в день, копии журнала транзакций — каждые 15–30 минут при полной модели восстановления. Копирование через выгрузку dt в 1С не заменяет SQL-бэкап: dt медленнее и не даёт восстановления на произвольный момент времени.
Диагностика медленной работы и блокировок
Когда пользователи жалуются на «тормоза», диагностику начинают с локализации уровня проблемы. Если медленно у всех и везде — смотрят сервер: загрузку дисков, память, ожидания SQL Server. Если медленно в конкретном отчёте — анализируют конкретный запрос и его план выполнения.
Основные инструменты: технологический журнал платформы 1С (показывает длительные запросы и события TLOCK, TDEADLOCK), динамические административные представления SQL Server (sys.dm_os_wait_stats, sys.dm_exec_requests) и встроенный отчёт Activity Monitor. Взаимоблокировки (deadlock) видны в технологическом журнале и в системном журнале SQL Server.
Как выбрать действие
Обновление платформы и конфигурации в связке с SQL Server
Обновление в клиент-серверном режиме имеет особенность: реструктуризация таблиц выполняется на стороне SQL Server и на больших базах может занимать часы. Перед обновлением обязательна полная резервная копия, а само обновление лучше сначала прогнать на копии базы, чтобы оценить длительность и отловить ошибки.
Версия платформы 1С должна быть совместима с версией SQL Server — матрицу совместимости публикует вендор в системных требованиях. Использование слишком старой платформы с новым SQL Server или наоборот приводит к ошибкам соединения и неподдерживаемым конструкциям.
Как проверить результат
База восстанавливается без ошибок и открывается в 1С
Ошибки восстановления или отсутствие свежих данных
Фрагментация ключевых таблиц ниже 10–15%
Фрагментация быстро возвращается — регламент не отрабатывает
Стабильное время проведения документов изо дня в день
Рост времени при неизменном объёме данных
FAQ
Можно ли работать с базой 1С напрямую через SQL-запросы?
Чтение данных прямыми запросами технически возможно и иногда применяется для интеграций и внешней отчётности, хотя структура таблиц не документирована и может меняться при обновлениях. Запись напрямую запрещена: она нарушает служебные связи платформы и приводит к разрушению базы. Для интеграций безопаснее использовать штатные механизмы — веб-сервисы, OData, планы обмена.
Какая редакция SQL Server нужна для 1С?
Для рабочих систем обычно выбирают Standard — её ресурсных ограничений достаточно большинству внедрений. Enterprise нужен при требованиях к онлайн-перестроению индексов, секционированию и расширенным функциям отказоустойчивости. Express подходит только для обучения и тестов из-за ограничений на память и размер базы.
Почему база 1С на SQL Server растёт быстрее, чем ожидалось?
Основные причины — журнал транзакций при полной модели восстановления без регулярного копирования, версии объектов и история изменений, регистры сведений с большим числом движений, а также хранение вложений в базе. Проверьте размер журнала и настройте регулярное резервное копирование журнала либо переключитесь на простую модель восстановления, если восстановление на произвольный момент не требуется.
Что делать, если сеансы пользователей массово отваливаются?
Проверьте три зоны: память на сервере (не вытесняет ли SQL Server сервер 1С), стабильность сети между сервером 1С и SQL Server, и журналы агента сервера 1С на предмет перезапусков рабочих процессов. Частая причина — нехватка памяти из-за неограниченного max server memory при совместном размещении компонентов.
Как часто нужно обновлять статистику и перестраивать индексы?
Типовая практика — еженедельное перестроение или реорганизация индексов и ежедневное (или через день) обновление статистики в ночное окно. На базах с интенсивной записью статистику по ключевым таблицам обновляют чаще. Ориентир — не календарь, а динамика: если время типовых операций стабильно, регламент подобран верно.
Можно ли перенести базу 1С с одного SQL Server на другой?
Да, стандартный способ — полный бэкап средствами SQL Server и восстановление на новом сервере, после чего в консоли кластера 1С в свойствах информационной базы меняют имя сервера СУБД. Альтернатива — выгрузка в dt и загрузка в новую базу, но на больших базах это существенно медленнее. После переноса проверьте collation нового сервера и права учётной записи.
Что важно запомнить
1С хранит всю базу в SQL Server и полностью зависит от его настройки: ограничьте память СУБД, правильно сконфигурируйте tempdb, разведите файлы данных и журнала по дискам, настройте регламент индексов, статистики и бэкапов. Никогда не правьте данные напрямую в SQL и проверяйте восстановление копий на тестовом сервере.