MS SQL Server под 1С:Предприятие 8.3: от дистрибутива до первой базы

· 10 мин

Содержание

Чтобы 1С 8.3 работала на MS SQL Server, при установке СУБД нужны три вещи: сортировка Cyrillic_General_CI_AS, смешанный режим проверки подлинности и включённый протокол TCP/IP. Дальше вы создаёте логин SQL с правом создавать базы, ограничиваете память сервера и регистрируете информационную базу в кластере 1С. Всё остальное — тонкая настройка под нагрузку.

Важный момент: к MS SQL обращаются не пользователи, а сервер 1С:Предприятия. Значит, сначала нужен установленный кластер 1С и серверная лицензия, а клиенты подключаются к базе как обычно, по имени сервера 1С. Инструкция ниже — для Windows Server 2016 и новее и платформы 8.3.

Подготовка сервера и выбор редакции SQL Server

Начните с ответа на вопрос, где будет жить СУБД. Для небольшой фирмы (до 15–20 пользователей) сервер 1С и SQL Server часто ставят на одну машину. Для 50+ пользователей СУБД лучше вынести на отдельный сервер с быстрыми дисками.

Что проверить до установки:

  • 🖥️ ОС — Windows Server 2016, 2019 или 2022, все обновления установлены, имя компьютера уже окончательное (переименовывать сервер после установки SQL неудобно).
  • 💾 Диски — отдельные тома под файлы данных, журналы транзакций и tempdb. Лучше всего SSD/NVMe. Системный диск под базы не используйте.
  • ⚡ Схема электропитания Windows — «Высокая производительность». На «Сбалансированной» процессор сбрасывает частоту, и запросы 1С заметно тормозят.
  • 🔐 Учётная запись администратора Windows для установки.
  • 📋 Список поддерживаемых СУБД для вашего релиза платформы. Свежий SQL Server на старой платформе может не заработать, поэтому сверяйтесь с документацией к своему релизу 1С.

Какую редакцию выбрать

РедакцияОграниченияКогда подходит
Expressбаза до 10 ГБ, ограничение по памяти буферного пула (около 1,4 ГБ) и ядрамтест, демо, база на 3–5 человек
Standardограничение по объёму памяти и числу ядер, но для 1С обычно хватаетрабочий вариант для большинства фирм
Enterpriseбез практических ограниченийкрупные базы, сотни пользователей
Developerполный функционал, но только для разработки и тестовстенд программиста, не прод

Express бесплатен, но 10 ГБ — это предел одной базы. Бухгалтерия за 3–4 года активной работы легко его превышает, после чего запись в базу прекращается.

Лицензия SQL Server покупается отдельно от 1С. Ориентировочно Standard по модели «на ядро» обходится в сотни тысяч рублей, вариант «сервер + клиентские лицензии» дешевле для небольшой команды. Точную стоимость уточняйте у поставщика.

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

Запустите setup.exe из дистрибутива и выберите «Новая установка изолированного экземпляра SQL Server». Дальше по шагам.

Шаг 1. Компоненты

Для работы 1С достаточно одного компонента:

  • ✅ Службы ядра СУБД (Database Engine Services).

Полнотекстовый поиск, службы Analysis, Reporting, Integration и машинное обучение 1С не использует. Не ставьте лишнее: каждый компонент — это ещё одна служба и ещё одна точка отказа.

На этом же экране задайте каталоги экземпляра. Корень экземпляра можно оставить на системном диске, а каталоги данных переопределите позже, в настройках ядра.

Шаг 2. Экземпляр

Выберите экземпляр по умолчанию (MSSQLSERVER), если на сервере это единственный SQL. Тогда в 1С указывается просто имя компьютера.

Именованный экземпляр (SRV-DB\SQL1C) тоже работает, но требует службы SQL Server Browser или фиксированного порта. Для новичка это лишняя сложность.

Шаг 3. Учётные записи служб

Оставьте предложенные виртуальные учётные записи NT Service\MSSQLSERVER для ядра и агента. Тип запуска агента SQL Server поставьте «Автоматически» — без него не будут работать планы обслуживания и резервного копирования.

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

Шаг 4. Сортировка — самый важный экран

Перейдите на вкладку «Параметры сортировки» и установите Cyrillic_General_CI_AS.

Сортировку экземпляра после установки поменять очень сложно. Если ошиблись — проще переустановить SQL Server сразу, пока на нём нет баз.

На русской Windows сортировка обычно подставляется правильно. На английской системе по умолчанию будет SQL_Latin1_General_CP1_CI_AS — с ней кириллица в 1С будет сортироваться и искаться неправильно.

Шаг 5. Проверка подлинности и каталоги

На странице настройки ядра СУБД:

  1. Выберите смешанный режим (проверка подлинности SQL Server и Windows).
  2. Задайте сложный пароль для sa и сохраните его в менеджере паролей.
  3. Добавьте текущего пользователя и группу администраторов в администраторы SQL Server.
  4. На вкладке «Каталоги данных» укажите отдельные пути для файлов данных, журналов и резервных копий.
  5. На вкладке TempDB задайте число файлов tempdb по числу ядер, но не больше 8, и вынесите их на быстрый диск.

После установки отдельно скачайте и поставьте SQL Server Management Studio (SSMS): начиная с версии 2016 она не входит в дистрибутив.

Служба SQL Server и параметры запуска

Откройте «Диспетчер конфигурации SQL Server» (SQL Server Configuration Manager) → «Службы SQL Server».

Проверьте:

  • 🟢 SQL Server (MSSQLSERVER) — работает, тип запуска «Автоматически».
  • 🟢 Агент SQL Server — работает, «Автоматически».
  • ⚪ SQL Server Browser — нужен только для именованного экземпляра без фиксированного порта.

Для 1С параметры запуска (флаги трассировки и т. п.) на старте менять не нужно. Если планируете большие объёмы памяти, дайте учётной записи службы право «Блокировка страниц в памяти» через локальную политику безопасности (secpol.msc → Локальные политики → Назначение прав пользователя). Тогда Windows не будет выталкивать кэш SQL в файл подкачки.

Любые изменения в настройках службы требуют её перезапуска. Перезапуск SQL Server обрывает все сеансы 1С на этой СУБД — делайте это вне рабочего времени и предупредив пользователей.

Сетевой протокол TCP/IP и порт 1433

Сразу после установки SQL Server часто принимает подключения только локально. Если сервер 1С стоит на другой машине, без этого раздела он СУБД не увидит.

  1. В диспетчере конфигурации откройте «Сетевая конфигурация SQL Server» → «Протоколы для MSSQLSERVER».
  2. Включите TCP/IP. Протокол Named Pipes можно оставить выключенным.
  3. Откройте свойства TCP/IP → вкладка «IP-адреса» → блок IPAll. Для экземпляра по умолчанию должно быть: «TCP-порт» — 1433, «Динамические TCP-порты» — пусто.
  4. Перезапустите службу SQL Server.

Если SQL и 1С стоят на одном сервере, будет работать протокол общей памяти (Shared Memory) — он включён по умолчанию и самый быстрый. TCP/IP всё равно включите: через него ходят SSMS с рабочих мест администраторов и резервное копирование по сети.

Брандмауэр

Откройте входящий порт 1433. Достаточно разрешить его только с адреса сервера 1С и с машин администраторов. В PowerShell от имени администратора:

New-NetFirewallRule -DisplayName "SQL Server 1433" -Direction Inbound -Protocol TCP -LocalPort 1433 -Action Allow

Ограничить источники можно в свойствах созданного правила, на вкладке «Область». Пользователям 1С доступ к порту 1433 не нужен вообще — они общаются только с сервером 1С (порт 1540 и далее).

Логин для 1С и права доступа

Работать из 1С под sa можно, но это плохая практика. Создайте отдельный логин SQL, который будет указан в настройках информационной базы.

Минимальный набор прав:

ЗадачаЧто выдать логину
Создавать новые базы из 1Ссерверную роль dbcreator
Работать с уже созданной базойроль db_owner в этой базе (создатель базы её владелец автоматически)
Загружать .dt, реструктуризацияхватает прав владельца базы

Скрипт для SSMS (замените пароль на свой):

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

CHECK_EXPIRATION = OFF выключает срок действия пароля. Иначе через несколько недель все базы перестанут открываться с ошибкой входа, и причину будут долго искать.

Если база уже существует (например, восстановлена из бэкапа), откройте в SSMS Безопасность → Имена входа → usr1c → Сопоставление пользователей, отметьте нужную базу и роль db_owner.

Права sysadmin для логина 1С выдают, когда лень разбираться. Работать будет, но такой логин может удалить любую базу на сервере, включая чужие.

Регистрация базы в кластере 1С

После настройки SQL создайте информационную базу. В окне запуска 1С нажмите «Добавить» → «Создание новой информационной базы» → выберите вариант «На сервере 1С:Предприятия» и заполните:

  • Кластер серверов 1С:Предприятия — имя сервера 1С.
  • Имя информационной базы в кластере — например, buh.
  • Тип СУБД — MS SQL Server.
  • Сервер баз данных — имя сервера SQL (для именованного экземпляра SRV-DB\SQL1C).
  • Имя базы данных — имя базы на SQL, удобно совпадающее с именем в кластере.
  • Пользователь базы данных и пароль — логин usr1c.
  • Смещение дат — 2000.
  • Флажок «Создать базу данных в случае ее отсутствия» — включить.

Ту же операцию можно выполнить в консоли администрирования серверов 1С: узел «Информационные базы» → «Создать».

Оптимизация MS SQL под нагрузку 1С

Настройки по умолчанию рассчитаны на универсальную нагрузку. Для 1С есть несколько обязательных правок.

Ограничение памяти

SQL Server по умолчанию забирает всю память, какую видит. На общем сервере с 1С это приводит к нехватке памяти у рабочих процессов rphost.

Ориентиры для параметра «Максимальный объём памяти сервера»:

ОЗУ сервераSQL отдельноSQL + сервер 1С на одной машине
16 ГБ12 ГБ8 ГБ
32 ГБ28 ГБ18 ГБ
64 ГБ58 ГБ40 ГБ

На отдельном сервере ОС оставляют 4–6 ГБ. На общем — ещё и столько, сколько реально съедают процессы 1С в пиковые часы (смотрите в диспетчере задач).

Параллелизм

Для 1С рекомендуется MAXDOP = 1. Запросы 1С короткие и многочисленные, распараллеливание создаёт лишние ожидания и блокировки.

Скрипт для 32 ГБ на общем сервере:

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 18432;
EXEC sp_configure 'max degree of parallelism', 1;
RECONFIGURE;

Оба параметра применяются сразу, без перезапуска службы.

Модель восстановления и обслуживание

  • 🗂️ Модель восстановления — «Полная», если нужны восстановление на момент времени и бэкапы журнала. «Простая» — если хватает ежедневной полной копии. При «Полной» без резервного копирования журнала файл .ldf растёт до заполнения диска.
  • 🔄 План обслуживания — ежедневное обновление статистики, еженедельная перестройка индексов, ежедневный полный бэкап. Создаётся в SSMS через «Управление» → «Планы обслуживания».
  • 📏 Прирост файлов — задайте в мегабайтах (например, 512 МБ для данных и 256 МБ для журнала), а не в процентах.

Диагностика: 1С не подключается к SQL Server

Когда что-то не работает , текст ошибки почти всегда указывает на конкретный слой. Ниже — частые сообщения и их причины.

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

Частые ошибки при установке

  • ❌ Ставить SQL на тот же диск, что и Windows. Рост журнала заполняет системный диск, и сервер падает целиком.
  • ❌ Оставить именованный экземпляр с динамическим портом и закрытый брандмауэр — подключение работает «через раз», после каждой перезагрузки порт меняется.
  • ❌ Не ограничить память на общем сервере с 1С — рабочие процессы 1С падают с нехваткой памяти в пиковые часы.
  • ❌ Поставить Express под рабочую базу и забыть про лимит 10 ГБ.

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

Можно ли перевести существующую файловую базу на MS SQL?
Да. Выгрузите базу в .dt через Конфигуратор («Администрирование» → «Выгрузить информационную базу»), создайте серверную базу по инструкции выше и загрузите в неё .dt. Пользователи переподключаются к новой базе в списке баз.
Нужна ли отдельная лицензия 1С для работы с MS SQL?
Нужна лицензия на сервер 1С:Предприятия: клиент-серверный режим без неё не работает. Лицензия на сам SQL Server приобретается у Microsoft или её партнёров отдельно, кроме бесплатной редакции Express.
Можно ли держать базы 1С и другие базы на одном экземпляре SQL?
Можно, если у них совместимая сортировка и вы контролируете память. Но тяжёлая сторонняя база будет конкурировать с 1С за кэш и диски, поэтому для нагруженных систем лучше отдельный экземпляр.
Какое смещение дат указывать и почему 2000?
Для MS SQL Server при создании базы 1С указывают смещение 2000. Изменить его у существующей базы нельзя, только через выгрузку и загрузку .dt в новую базу.
Как проверить, что SQL Server принял настройки памяти и параллелизма?
Выполните в SSMS запрос SELECT name, value_in_use FROM sys.configurations WHERE name IN ('max server memory (MB)', 'max degree of parallelism');. В столбце value_in_use будут действующие значения.