Сервер 1С:Предприятие 8.3 и MS SQL Server: от выбора железа до регламента обслуживания

· 11 мин

Содержание

Сервер 1С с MS SQL настраивают в таком порядке: ставят SQL Server с сортировкой Cyrillic_General_CI_AS, ограничивают ему память и выставляют max degree of parallelism = 1, затем ставят сервер 1С:Предприятие 8.3 как службу и создают базу через консоль кластера с типом СУБД MSSQLServer. После этого настраивают резервное копирование , обслуживание индексов и статистик, а также журнал ошибок.

Ниже каждый шаг расписан с цифрами и командами. Инструкция общая для платформы 8.3 и любой конфигурации: БП, ЗУП, УТ и ERP на сервере ведут себя одинаково, разница только в нагрузке.

Железо и редакция SQL Server: что решить до установки

Связка «1С + SQL» упирается не в число ядер, а в частоту процессора, объём памяти и скорость дисков. Рабочий процесс 1С выполняет вызов пользователя в одном потоке, поэтому 8 ядер по 3,5 ГГц полезнее, чем 24 ядра по 2,1 ГГц.

Ориентиры для сервера, где 1С и SQL стоят на одной машине:

ПользователейПроцессорПамятьДиски
до 154–6 ядер, от 3 ГГц16–32 ГБ2 SSD в зеркале
15–508–12 ядер32–64 ГБNVMe: данные отдельно от журналов
50–15016+ ядер, 1С и SQL на разных серверах64–128 ГБ на SQLNVMe, отдельный том под tempdb

Это примерные цифры для типовых БП и УТ. ERP и базы с тяжёлыми закрытиями месяца требуют примерно в 1,5–2 раза больше памяти.

💾 Как разложить диски:

  • 📁 файлы данных .mdf — на быстрый том;
  • 📝 журналы транзакций .ldf — на отдельный том, туда идёт последовательная запись;
  • ⚙️ tempdb — на самый быстрый диск, 1С активно пишет туда временные таблицы;
  • 🗄️ резервные копии — на другой физический диск или в сеть, но не рядом с базой.

Редакцию SQL Server выбирают по размеру базы и памяти:

РедакцияОграниченияКогда подходит
Expressбаза до 10 ГБ, кэш около 1,4 ГБ, до 4 ядертест, демо, совсем маленькая фирма
Standardдо 24 ядер, кэш буфера до 128 ГБпочти все рабочие внедрения
Enterpriseбез этих ограниченийкрупные ERP, кластеры высокой доступности

Список поддерживаемых версий SQL Server зависит от версии платформы 1С. Проверьте его в документации к вашему релизу платформы до покупки лицензий.

Установка MS SQL Server под 1С: параметры, которые потом не исправить

Большинство настроек SQL можно поменять в любой момент. Сортировку экземпляра — нет: её меняют только переустановкой или сложной пересборкой системных баз.

Порядок установки:

  1. Запустите установщик SQL Server, выберите Database Engine Services. Management Studio (SSMS) ставится отдельным дистрибутивом.
  2. На шаге конфигурации сервера откройте вкладку сортировки и выберите Cyrillic_General_CI_AS.
  3. Учётную запись службы оставьте виртуальной (NT Service\MSSQLSERVER) или задайте отдельную доменную учётку без прав администратора.
  4. Поставьте галочку «Perform Volume Maintenance Task» (Instant File Initialization). Без неё рост файлов базы идёт медленно, потому что SQL заполняет новое место нулями.
  5. Режим аутентификации — смешанный (Mixed Mode). Сервер 1С обычно подключается к SQL по логину SQL Server.
  6. На вкладке каталогов данных разнесите пути к данным, журналам, tempdb и бэкапам по разным томам.
  7. На вкладке tempdb задайте число файлов по числу ядер, но не больше 8, одинакового размера, с ростом в мегабайтах, а не в процентах.

Не используйте учётную запись sa для подключения 1С. Создайте отдельный логин:

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

Роль dbcreator нужна, чтобы 1С сама создавала новые базы. Если базы создаёт администратор SQL, логину достаточно роли db_owner в каждой базе 1С.

Настройка сервера 1С:Предприятие и создание базы на SQL

Установка сервера 1С

  1. Запустите установщик платформы 8.3 нужной разрядности. В списке компонентов отметьте «Сервер 1С:Предприятия 8», «Модули расширения веб-сервера» (если нужна публикация) и «Администрирование сервера 1С:Предприятия».
  2. Отметьте установку сервера как службы Windows. Установщик предложит пользователя USR1CV8 — можно оставить его или указать доменную учётку.
  3. После установки проверьте в services.msc, что служба «Агент сервера 1С:Предприятия 8.3» запущена и стоит автозапуск.

Чтобы консоль кластера открылась, зарегистрируйте библиотеку администрирования от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.25.1286\bin\radmin.dll"

Номер версии в пути подставьте свой. Если на машине несколько платформ, регистрируйте radmin.dll той же версии, что и служба, иначе консоль не подключится.

Порты кластера

ПортКто слушаетЗачем
1540агент серверак нему первым обращается клиент и консоль
1541менеджер кластерараспределение соединений
1560–1591рабочие процессыосновная работа пользователей
1433SQL Serverподключение сервера 1С к базе

Диапазон 1560–1591 задают в свойствах рабочего сервера. Если меняете его, меняйте и правила брандмауэра.

Создание информационной базы

В консоли администрирования откройте Центральные серверы 1С:Предприятия → <имя сервера> → Кластеры → <кластер> → Информационные базы, в контекстном меню выберите «Создать → Информационная база». Заполните поля:

  • 🏷️ Имя — как база будет видна в кластере, без пробелов;
  • 🖥️ Сервер баз данных — имя сервера SQL или имя\экземпляр;
  • 🗃️ Тип СУБД — MSSQLServer;
  • 📛 База данных — имя базы на SQL;
  • 🔑 Пользователь сервера БД и пароль — логин usr1c;
  • 📅 Смещение дат — для MS SQL ставят 2000;
  • ✅ «Создать базу данных в случае ее отсутствия» — если базу создаёт 1С;
  • ✅ «Разрешить выдачу лицензий сервером 1С:Предприятия» — для серверных клиентских лицензий;
  • ✅ «Установить блокировку регламентных заданий» — для копии базы, чтобы она не слала почту и обмены вместо рабочей.

Пустую базу затем наполняют загрузкой файла .dt в Конфигураторе: Администрирование → Загрузить информационную базу. Загрузка требует монопольного доступа и заменяет всё содержимое базы.

Оптимизация MS SQL Server для 1С

Три настройки дают основной эффект. Выполните их в SSMS:

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
-- оставить ОС и серверу 1С память: здесь 64 ГБ всего, SQL получает 44 ГБ
EXEC sp_configure 'max server memory (MB)', 45056;
-- 1С строит запросы так, что параллельные планы чаще вредят
EXEC sp_configure 'max degree of parallelism', 1;
RECONFIGURE;

Как считать память. Если 1С и SQL на одной машине, вычтите 4 ГБ на Windows и память на рабочие процессы 1С (примерно 1–1,5 ГБ на каждые 10 пользователей). Остаток отдайте SQL. На выделенном сервере SQL оставьте системе 10–15% памяти, но не меньше 4 ГБ.

Без ограничения max server memory SQL заберёт почти всю память. Рабочие процессы 1С начнут уходить в файл подкачки, и система «встанет» без видимой причины.

Дополнительно:

  • 🔒 выдайте учётке службы SQL право «Lock pages in memory» в локальной политике безопасности — тогда Windows не вытесняет кэш SQL на диск;
  • 📈 у базы 1С поставьте рост файлов фиксированным шагом: 512 МБ для данных и 256 МБ для журнала;
  • 🔄 модель восстановления выбирайте под регламент бэкапов (ниже);
  • 🚫 отключите автоматическое сжатие базы (AUTO_SHRINK) — оно дробит индексы.

Регламент обслуживания

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

ОперацияКак частоКоманда
Обновление статистиккаждую ночьEXEC sp_updatestats;
Очистка процедурного кэшасразу после статистикDBCC FREEPROCCACHE;
Реорганизация индексовкаждую ночьALTER INDEX ALL ON <таблица> REORGANIZE;
Перестроение индексовраз в неделюALTER INDEX ALL ON <таблица> REBUILD;
Проверка целостностираз в неделюDBCC CHECKDB (N'buh') WITH NO_INFOMSGS;

Перестроение индексов в Standard блокирует таблицы, поэтому запускайте его ночью, когда пользователей нет. Удобнее собрать регламент мастером Maintenance Plans в SSMS: он сам обойдёт все таблицы. В SQL Server Express агента нет, задания запускают через планировщик Windows и sqlcmd.

Резервное копирование базы 1С на SQL Server

Выгрузка .dt из Конфигуратора — не замена бэкапу SQL. Она требует монопольного доступа, на больших базах идёт часами и не даёт восстановиться на конкретный момент.

Две рабочие схемы:

СхемаМодель восстановленияЧто делаемСколько данных можно потерять
ПростаяSimpleполный бэкап каждую ночь, разностный днёмдо 1 рабочего дня или до последнего разностного
ПолнаяFullполный ночью + журнал каждые 15–30 мин15–30 минут

Для бухгалтерии на 10–20 человек хватает простой схемы. Если база работает круглосуточно или потеря полдня работы недопустима — полная модель.

-- полный бэкап с проверкой контрольных сумм
BACKUP DATABASE [buh]
  TO DISK = N'E:\Backup\buh_full.bak'
  WITH COMPRESSION, CHECKSUM, INIT;

-- журнал транзакций (только в модели Full)
BACKUP LOG [buh]
  TO DISK = N'E:\Backup\buh_log.trn'
  WITH COMPRESSION, CHECKSUM;

-- проверка, что файл читается
RESTORE VERIFYONLY FROM DISK = N'E:\Backup\buh_full.bak';

COMPRESSION поддерживается в Standard и Enterprise, в Express его нет.

В модели Full журнал растёт, пока его не бэкапят. Если перевести базу в Full и забыть про задание BACKUP LOG, файл .ldf за пару недель займёт весь диск.

Раз в месяц делайте пробное восстановление в отдельную базу на SQL и подключайте её к кластеру как тестовую — с блокировкой регламентных заданий. Бэкап, который ни разу не восстанавливали, проверенным не считается.

Мониторинг сервера 1С и SQL: где искать причину тормозов

Начинайте с трёх источников.

Консоль кластера. В списке рабочих процессов видно доступную производительность, занятую память и число соединений. В разделе сеансов — кто сколько времени держит вызов. Там же смотрят блокировки.

Счётчики производительности Windows (perfmon):

  • 🧠 Page Life Expectancy у SQL — если держится ниже 300 секунд, SQL не хватает памяти;
  • 💽 Avg. Disk sec/Read и Avg. Disk sec/Write — выше 20 мс на SSD означает проблему с дисками;
  • ⏱️ Processor Queue Length — устойчиво больше двух на ядро говорит о нехватке процессора.

Технологический журнал 1С. Это лог сервера, который включают файлом logcfg.xml в каталоге conf платформы, например C:\Program Files\1cv8\conf\. Минимальная настройка для поиска исключений и конфликтов блокировок:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="D:\techlog" history="24">
    <event><eq property="name" value="EXCP"/></event>
    <event><eq property="name" value="TDEADLOCK"/></event>
    <event><eq property="name" value="TTIMEOUT"/></event>
    <property name="all"/>
  </log>
</config>

history="24" — хранить логи 24 часа. Логи растут быстро, поэтому каталог держите на отдельном диске, а журнал выключайте, когда разбор закончен.

Диагностика: выберите симптом

Права, порты и пароли: защита связки 1С и SQL

Сервер с базами 1С хранит всю бухгалтерию фирмы. Минимальный набор мер:

  1. Администраторы кластера. По умолчанию консоль открыта всем, кто может подключиться к порту 1540. Добавьте администратора в свойствах центрального сервера и в свойствах кластера, иначе любой пользователь сети сможет удалить базу из кластера.
  2. Логин SQL без лишних прав. Не sa и не sysadmin. Логин sa отключите или задайте ему длинный пароль.
  3. Брандмауэр. Порты 1540, 1541 и 1560–1591 открывайте только для подсети пользователей. Порт 1433 — только для сервера 1С и машины администратора.
  4. Каталог кластера. Папка srvinfo (по умолчанию в профиле пользователя службы) содержит списки баз и пароли подключения к SQL. Доступ к ней — только службе 1С и администраторам.
  5. Бэкапы. Каталог с .bak не должен быть доступен на запись с компьютеров пользователей: шифровальщик в сети уничтожит и базу, и копии.
  6. Пользователи информационной базы. Включите аутентификацию 1С или ОС для каждой базы. База без пользователей открывается любому, кто знает её имя в кластере.

RDP напрямую из интернета к серверу 1С не открывайте. Подключение — через VPN или шлюз удалённых рабочих столов.

Когда одного сервера мало: масштабирование кластера

Первый шаг — разнести 1С и SQL на разные машины. Пока они вместе, они конкурируют за память и процессор. После разделения сервер SQL получает всю память под кэш, а сервер 1С — все ядра под рабочие процессы. Сеть между ними — не меньше 1 Гбит/с, лучше 10 Гбит/с и в одной стойке: каждый запрос 1С — это обмен с SQL.

Дальше настраивают рабочий сервер 1С. В его свойствах в консоли задают:

  • «Количество ИБ на процесс» — при значении 1 каждая база получает свой рабочий процесс, тяжёлая ERP не тормозит соседнюю БП;
  • «Количество соединений на процесс» — сколько пользователей обслуживает один процесс; при росте нагрузки кластер поднимет дополнительные процессы;
  • «Безопасный расход памяти за один вызов» — защищает от отчёта, который съедает всю память сервера.

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

НагрузкаЧто делать
Всё на одной машине, тормозит при закрытии месяцавынести SQL на отдельный сервер
Несколько баз мешают друг другу«Количество ИБ на процесс» = 1
1С-сервер загружен по процессору на 80%+второй рабочий сервер в кластере
Простой недопустимрезервный сервер кластера + Always On для SQL

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

Можно ли поставить сервер 1С и SQL на одну виртуальную машину?
Да, до 30–50 пользователей это нормальная схема. Обмен идёт через общую память без сети, что даже быстрее. Главное — ограничить память SQL.
Хватит ли бесплатного SQL Server Express?
Только для тестов или очень маленькой базы. Лимит в 10 ГБ на базу типовая БП с несколькими годами учёта превышает, а кэш около 1,4 ГБ даёт медленную работу.
Нужно ли покупать лицензии SQL Server отдельно от лицензий 1С?
Да. Лицензии 1С на сервер и клиентов не включают права на MS SQL. Нужна лицензия SQL Server на ядра либо на сервер плюс клиентские лицензии.
Можно ли перенести файловую базу на SQL без потерь?
Да. Выгрузите файловую базу в .dt, создайте пустую базу в кластере на SQL и загрузите .dt в Конфигураторе. Данные, пользователи и настройки переносятся целиком.
Что делать, если забыт пароль администратора кластера?
Остановите службу агента в нерабочее время, восстановите каталог кластера из резервной копии или обратитесь к тому, кто администрировал сервер. Пересоздавать кластер не нужно: так теряется список баз и их настройки.