Решение задач 1С:Предприятие 8 на примерах

MS SQL Server для 1С: установка, настройка и обслуживание базы

Базы данных и СУБДОпубликовано

Связка «сервер 1С + MS SQL» работает быстро только при правильных настройках СУБД. Разбираем, какие версии и редакции SQL Server поддерживает 1С, как установить SQL для 1С (сортировка, аутентификация, мгновенная инициализация файлов), какие параметры сервера рекомендует методика 1С, как создать базу 1С на MS SQL, зачем нужно смещение дат 2000, какую модель восстановления выбрать и как настроить обновление статистики, очистку кэша и обслуживание индексов.

Какие версии SQL Server поддерживает 1С

Microsoft SQL Server — самая распространённая СУБД для клиент-серверной 1С на Windows. Согласно системным требованиям для 64-разрядной платформы поддерживаются SQL Server 2016, 2017, 2019 и 2022, а также более старые 2008 R2, 2012 и 2014. Версия SQL Server для Linux допускается, если рабочие серверы 1С работают на Windows. Новые версии SQL Server появляются в списке не сразу, поэтому перед покупкой лицензий проверьте требования для своего релиза платформы.

РедакцияКогда подходитОграничения
ExpressТест, обучение, очень маленькие базыДля SQL Server 2022: до 10 ГБ на базу, около 1,4 ГБ под буферный пул, не более одного процессора или четырёх ядер; нет агента SQL Server и сжатия резервных копий
StandardБольшинство рабочих баз 1СОграничения по памяти и ядрам, опубликованные Microsoft для версии
EnterpriseКрупные нагруженные системыБез ограничений редакции

Ограничения редакций приведены в документации Microsoft «Editions and supported features of SQL Server 2022». Если бесплатная СУБД нужна для рабочей базы больше 10 ГБ, присмотритесь к PostgreSQL для 1С.

Установка SQL Server для 1С

  1. Установите последний накопительный пакет обновлений (CU) для выбранной версии — первым пунктом этого требует чек-лист 1С.
  2. В списке компонентов отметьте «Database Engine Services». Полнотекстовый поиск, Reporting Services и прочие службы для 1С не нужны.
  3. Укажите учётную запись службы SQL Server. На странице её настройки включите параметр предоставления привилегии «Perform Volume Maintenance Task» — это включает мгновенную инициализацию файлов.
  4. На закладке параметров сортировки (Collation) оставьте или выберите Cyrillic_General_CI_AS — стандартный вариант для русскоязычной установки. Сортировка сервера наследуется системными базами, в том числе tempdb.
  5. Выберите смешанный режим аутентификации (SQL Server и Windows) и задайте пароль sa.
  6. Задайте каталоги данных, журналов и tempdb. Файлы данных и журналов транзакций желательно размещать на разных дисках: к скорости диска с журналом требования выше.
  7. Отдельно установите SQL Server Management Studio для администрирования.

Настройка MS SQL для 1С: параметры сервера

Методика 1С «Настройки Microsoft SQL Server для работы с 1С:Предприятием» — это чек-лист, по которому удобно проверять сервер. Главные пункты:

НастройкаРекомендация
Максимальная память сервераОграничьте. Если сервер 1С стоит на той же машине, уменьшите верхний порог на объём, достаточный для работы сервера 1С
Max degree of parallelism1
Database instant file initializationВключить для учётной записи службы SQL Server
Lock pages in memoryВключить, если сервер 1С не установлен на той же машине
ПротоколыTCP/IP включить; Shared Memory — если сервер 1С на той же машине; Named Pipes отключить
АутентификацияСмешанная; для каждой рабочей базы свой логин с ролями public и dbcreator
Схема питания Windows«Высокая производительность»

Память и параллелизм удобнее задать скриптом. Пример для сервера с 64 ГБ памяти, на котором работает и сервер 1С:

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 40960;   -- остаток оставляем ОС и серверу 1С
EXEC sp_configure 'max degree of parallelism', 1;
EXEC sp_configure 'remote admin connections', 1;     -- выделенное административное подключение
RECONFIGURE;

Проверить, работает ли мгновенная инициализация файлов, можно так, как предлагает методика 1С: создайте тестовую базу с файлом данных 5 ГБ и журналом 1 МБ. Если она создалась моментально, всё в порядке; затем тестовую базу удалите.

Базы model и tempdb

Новая база создаётся копией системной базы model, поэтому сначала настройте её: начальный размер файла данных 1–10 ГБ, журнала 1–2 ГБ, прирост файлов 512 МБ, модель восстановления по вашей политике резервного копирования, параметр «Auto update statistics asynchronously» = True. tempdb по чек-листу 1С разбейте на 4 файла данных с приростом 512 МБ. 1С активно использует временные таблицы, и быстрый диск под tempdb заметно ускоряет тяжёлые отчёты.

Логин для сервера 1С

Не используйте sa в настройках информационных баз. Создайте отдельный логин с правом создавать базы:

CREATE LOGIN usr1c_trade WITH PASSWORD = N'СложныйПароль!2026', CHECK_POLICY = ON;
ALTER SERVER ROLE dbcreator ADD MEMBER usr1c_trade;

Логин, создавший базу, становится её владельцем и получает в ней полные права — серверу 1С этого достаточно для работы и обновления конфигурации.

Создание базы 1С на MS SQL в кластере

В консоли администрирования серверов 1С откройте кластер, «Информационные базы → Создать» и заполните поля: имя базы в кластере, сервер баз данных (имя или адрес; для именованного экземпляра — сервер\экземпляр), тип СУБД MSSQLServer, имя базы данных, логин и пароль. Включите «Разрешить выдачу лицензий сервером 1С:Предприятия» и «Создать базу данных в случае ее отсутствия».

Отдельного внимания заслуживает поле «Смещение дат». При значении 2000 платформа прибавляет к датам 2000 лет при записи и вычитает при чтении. Это связано с ограничением диапазона типа datetime в SQL Server (не раньше 1753 года), и для новых баз обычно выбирают 2000. Поменять смещение у существующей базы можно только пересозданием: выгрузить базу в .dt, создать новую базу данных с нужным смещением и загрузить выгрузку. Прямые SQL-запросы к таблицам 1С должны учитывать смещение — подробнее в статье про SQL-запросы к базе 1С.

Модель восстановления и резервное копирование

Модель восстановления (recovery model) определяет, как ведётся журнал транзакций:

  • Simple — журнал очищается автоматически, восстановить можно только на момент полной или разностной копии. Подходит, если допустимо потерять данные за день.
  • Full — журнал хранит все изменения до резервного копирования журнала; можно восстановиться на любой момент времени. Обязательно настраивайте регулярный BACKUP LOG, иначе журнал будет расти до заполнения диска.
ALTER DATABASE [trade] SET RECOVERY FULL;

-- Полная копия раз в сутки
BACKUP DATABASE [trade] TO DISK = N'E:\Backup\trade_full.bak'
WITH COMPRESSION, CHECKSUM, INIT;

-- Копия журнала, например каждые 30 минут
BACKUP LOG [trade] TO DISK = N'E:\Backup\trade_log.trn'
WITH COMPRESSION, CHECKSUM;

В Express параметр COMPRESSION недоступен — уберите его. Размер файла журнала задавайте так, чтобы его хватало на всё время между копиями журнала без автоприроста. После первой автоматической копии восстановите её на тестовом сервере и проверьте, что база открывается.

Обслуживание базы 1С в SQL Server

Регламент 1С для MS SQL описан в методике «Регламентные операции на уровне СУБД для MS SQL Server». Операции автоматизируют планами обслуживания (Maintenance Plan) в SQL Server Agent:

ОперацияЧастотаОсобенности
Обновление статистики с FULLSCANНе реже раза в деньНе блокирует таблицы, но нагружает сервер
Очистка процедурного кэшаСразу после обновления статистикиЧтобы SQL Server не использовал старые планы
Дефрагментация (реорганизация) индексовНе реже раза в неделюНе блокирует таблицы
Перестроение индексовНе реже раза в неделю, в период минимальной нагрузкиБлокирует таблицы на время работы
USE [trade];
EXEC sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN';
DBCC FREEPROCCACHE;

Важная деталь для новых версий платформы: начиная с 8.3.22 перед дефрагментацией индекса методика 1С предписывает временно включить страничные блокировки, а после — снова выключить:

ALTER INDEX [ИмяИндекса] ON [dbo].[_Document123] SET (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON);
ALTER INDEX [ИмяИндекса] ON [dbo].[_Document123] REORGANIZE;
ALTER INDEX [ИмяИндекса] ON [dbo].[_Document123] SET (ALLOW_PAGE_LOCKS = OFF, ALLOW_ROW_LOCKS = ON);

Стандартная задача Reorganize Index в плане обслуживания этого не делает, поэтому для баз на 8.3.22 и выше реорганизацию удобнее выполнять своим скриптом или перестроением индексов в окно обслуживания.

Как узнать, какая таблица SQL относится к какому объекту 1С

Таблицы в базе называются _Document123, _AccumRg456 и так далее. Чтобы найти таблицу объекта для анализа размера или плана запроса, используйте функцию платформы:

&НаСервере
Процедура ВывестиТаблицыХранения()

    Объекты = Новый Массив;
    Объекты.Добавить("Документ.РеализацияТоваровУслуг");
    Объекты.Добавить("РегистрНакопления.ТоварыНаСкладах");

    Структура = ПолучитьСтруктуруХраненияБазыДанных(Объекты, Истина);

    Для Каждого Строка Из Структура Цикл
        Текст = Строка.Метаданные + " / " + Строка.Назначение + ": " + Строка.ИмяТаблицыХранения;
        Сообщить(Текст);
    КонецЦикла;

КонецПроцедуры

С параметром Истина имена возвращаются в терминах СУБД, как их показывает Management Studio.

Типичные ошибки

СимптомПричина и решение
Ошибка входа для пользователя (Login failed, 18456)Неверный пароль, отключена аутентификация SQL Server или у логина нет доступа. Проверьте режим аутентификации и роли логина.
Журнал транзакций переполнен, диск заканчиваетсяМодель Full без резервного копирования журнала. Настройте BACKUP LOG; после этого файл можно уменьшить через DBCC SHRINKFILE.
Конфликт параметров сортировки (collation conflict)Сортировка сервера и tempdb отличается от сортировки базы. Выравнивайте сортировку при установке сервера.
Express: база не растёт, ошибка лимита размераДостигнут предел 10 ГБ на базу. Нужна редакция Standard или другая СУБД.
Медленные отчёты после обновления конфигурацииУстарела статистика или в кэше остались старые планы. Обновите статистику с FULLSCAN и очистите процедурный кэш.
Сервер 1С не подключается к SQL Server по сетиВыключен протокол TCP/IP, закрыт порт в брандмауэре или для именованного экземпляра не работает служба SQL Server Browser.

Актуальность для новых версий

В системных требованиях 1С на ноябрь 2026 года указано, что для 64-разрядной платформы поддерживаются SQL Server 2016–2022 и более старые версии начиная с 2008 R2; SQL Server для Linux допускается при рабочих серверах 1С на Windows. Начиная с версии платформы 8.3.22 методика 1С требует перед дефрагментацией индексов временно включать страничные блокировки. Ограничения редакции Express приведены для SQL Server 2022 по документации Microsoft.

Частые вопросы

Можно ли использовать бесплатный SQL Server Express для 1С?

Можно для тестовых и очень маленьких баз. У Express 2022 лимит 10 ГБ на базу, около 1,4 ГБ памяти под буферный пул и ограничение по процессору, нет агента SQL Server для планов обслуживания. Для рабочей базы обычно нужна редакция Standard.

Какой collation выбрать при установке SQL Server для 1С?

Для русскоязычной установки обычно выбирают Cyrillic_General_CI_AS. Важно, чтобы сортировка сервера и tempdb не конфликтовала с сортировкой баз, иначе возможны ошибки конфликта параметров сортировки.

Что такое смещение дат 2000 и что выбрать?

При смещении 2000 платформа хранит даты в SQL Server со сдвигом на 2000 лет. Это обходит ограничение диапазона типа datetime. Для новых баз обычно выбирают 2000. Изменить смещение потом можно только через выгрузку в dt и загрузку в новую базу.

Какую модель восстановления выбрать для базы 1С?

Simple — если достаточно восстановления на момент последней полной или разностной копии. Full — если нужно восстанавливаться на любой момент времени; тогда обязательно настройте регулярное резервное копирование журнала транзакций.

Зачем очищать процедурный кэш после обновления статистики?

SQL Server кэширует планы запросов. Без очистки он может продолжать использовать старые планы, построенные по устаревшей статистике. Поэтому методика 1С рекомендует выполнять DBCC FREEPROCCACHE сразу после обновления статистики.

Какие права нужны логину сервера 1С в SQL Server?

По чек-листу 1С логину назначают роли public и dbcreator. Логин, создавший базу, становится её владельцем, и этого достаточно для работы и обновления конфигурации. Использовать sa в настройках информационных баз не следует.

PostgreSQL для 1С: установка на Windows и Linux, настройка и создание базы

Базы данных и СУБД

Какую сборку PostgreSQL выбрать для 1С, как установить её на Linux и Windows, настроить сетевой доступ и параметры postgresql.conf, создать информационную базу в кластере и обслуживать её.

Кэш сервера 1С и кэш клиента: как правильно очистить

Базы данных и СУБД

Где хранится кэш клиента и кэш сервера 1С, как очистить его параметром /ClearCache, вручную и скриптом, как безопасно удалить сеансовые данные snccntx на сервере и когда очистка не поможет.

SQL-запросы к базе 1С: таблицы, структура хранения и внешние источники

Базы данных и СУБД

Как устроены таблицы 1С в СУБД, как найти соответствие объектов и таблиц, писать SELECT для чтения и почему не стоит менять данные SQL-ом; плюс чтение внешней SQL-базы из 1С.

Ошибки при запуске 1С и «Непредвиденная ошибка»: как исправить

Базы данных и СУБД

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