Microsoft SQL Server под базой 1С 8.3: версии, редакции, настройка и бэкапы

· 11 мин

Содержание

SQL Server в 1С — это система управления базами данных Microsoft, в которой хранятся таблицы информационной базы, когда 1С работает в клиент-серверном режиме. Сама 1С при этом не исчезает: пользователи подключаются к серверу 1С:Предприятия, а он уже читает и пишет данные в SQL Server. Нужен он, когда файловой базе становится тесно: от 10–15 одновременных пользователей, при объёме базы в десятки гигабайт и при требованиях к надёжности бэкапов.

Связка выглядит так: клиент 1С → сервер 1С:Предприятия (агент, менеджер кластера, рабочие процессы) → Microsoft SQL Server → файлы .mdf и .ldf на диске. Каждый слой ставится и настраивается отдельно, и у каждого свои лицензии.

Как устроена работа 1С с Microsoft SQL Server

Платформа 1С 8.3 не обращается к SQL Server напрямую с компьютера бухгалтера. Запросы на встроенном языке 1С сервер приложений переводит в T-SQL и отправляет в СУБД. Пользователь видит только 1С, а в SQL Server Management Studio (SSMS) вы увидите базу с таблицами вида _Document123, _AccumRg456, _Reference78.

Что берёт на себя SQL Server:

  • 🗄️ хранение данных и журнала транзакций;
  • 🔒 транзакции и блокировки на уровне строк (в управляемом режиме блокировок 1С добавляет свои);
  • ⚡ кэширование данных в оперативной памяти и план выполнения запросов;
  • 💾 резервное копирование «на ходу», без выгона пользователей.

Что остаётся за сервером 1С:

  • 🧩 бизнес-логика конфигурации, проведение документов, расчёты;
  • 👥 сеансы и клиентские лицензии 1С;
  • 📋 регламентные задания и фоновые задачи.

Таблицы базы 1С правят только средствами 1С. Прямой UPDATE в SSMS ломает ссылочную целостность и итоги регистров, а техподдержка такие базы не сопровождает.

Файловая база или сервер с SQL: когда пора переходить

Файловая база — это один файл 1Cv8.1CD в сетевой папке. Её плюс — простота: скопировал папку, и бэкап готов. Минусы проявляются с ростом нагрузки.

КритерийФайловый режимКлиент-сервер + SQL Server
Одновременные пользователикомфортно до 5–10десятки и сотни
Размер базытерпимо до 10–20 ГБсотни гигабайт
Блокировкина всю таблицуна уровне записей
Бэкап без остановки работынетда
Удалённая работа через интернетмедленнонормально (через RDP или веб-клиент)
Стоимостьлицензии 1С+ лицензии сервера 1С и SQL Server
Администрированиеминимальноенужен человек, который понимает СУБД

Признаки, что файловая база упёрлась в потолок:

  • ⏳ закрытие месяца идёт часами, а пользователи в это время не могут провести документ;
  • ❗ регулярно всплывает Конфликт блокировок при выполнении транзакции;
  • 🐢 база тормозит, хотя сеть и диск не загружены;
  • 💥 после сбоя питания приходится запускать «Тестирование и исправление».
Нужен ли вам SQL Server?

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

Поддержка зависит от версии платформы, а не от конфигурации. Бухгалтерия, ЗУП и УТ на одной и той же платформе работают с одним и тем же набором СУБД.

Ориентиры для платформы 8.3.2x:

  • ✅ SQL Server 2016, 2017, 2019, 2022 — рабочий выбор для новых внедрений;
  • ⚠️ SQL Server 2012 и 2014 — встречаются на старых серверах, Microsoft их уже не поддерживает, переезжать стоит при ближайшем обновлении железа;
  • ❌ SQL Server 2005 и 2008 — не используйте: нет обновлений безопасности, и новые выпуски платформы их не поддерживают.

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

Серверу 1С нужен клиентский драйвер для доступа к SQL Server. Native Client 11 входил в старые дистрибутивы SQL Server, а с 2022 года Microsoft его не поставляет — нужен Microsoft OLE DB Driver for SQL Server. Если сервер 1С стоит на отдельной машине, драйвер ставят именно туда.

Кроме Microsoft SQL Server, платформа 8.3 работает с PostgreSQL (сборки с патчами для 1С), IBM Db2 и Oracle Database. На практике в России основная альтернатива — PostgreSQL: бесплатна и работает и на Windows, и на Linux.

Выбор редакции и лицензий SQL Server для 1С

Редакция определяет лимиты по памяти, ядрам и размеру базы. Для 1С важны три.

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

Express бесплатна, но ограничение в 10 ГБ касается каждой базы. Бухгалтерия небольшой фирмы перерастает его за 2–4 года. Когда предел достигнут, SQL Server откажет в росте файла с ошибкой вида CREATE DATABASE or ALTER DATABASE failed because the resulting cumulative database size would exceed your licensed limit of 10240 MB per database, и документы перестанут записываться.

Варианты лицензирования Standard:

  1. По ядрам — пакеты по 2 ядра, минимум 4 ядра на процессор. Пользователей не считают.
  2. Сервер + CAL — лицензия на сервер и клиентская лицензия на каждого пользователя или устройство. Выгодно при малом числе пользователей.
  3. Runtime-лицензии для 1С — SQL Server, который поставляется вместе с продуктами 1С и разрешён только для работы с базами 1С. Обычно это самый дешёвый законный путь для небольшого офиса.

То, что все пользователи заходят через сервер 1С под одной учётной записью, не уменьшает число нужных CAL. По правилам Microsoft считаются реальные люди или устройства, которые работают с данными.

Сервер 1С:Предприятия лицензируется отдельно: лицензия на сервер (32- или 64-разрядный) плюс клиентские лицензии 1С на рабочие места. Без лицензии сервера 1С клиент-серверная база не запустится.

Установка и первичная настройка SQL Server для 1С

Порядок для Windows Server 2016 и новее, когда SQL и сервер 1С стоят на одной машине.

Шаг 1. Установка экземпляра

  1. Запустите установщик, выберите компонент Database Engine Services. Остальные (Analysis, Reporting, Integration) для 1С не нужны.
  2. Экземпляр можно оставить по умолчанию MSSQLSERVER — тогда в 1С указывают просто имя сервера.
  3. Параметры сортировки (collation): Cyrillic_General_CI_AS. Её предлагает установщик на русской Windows, менять не надо.
  4. Режим проверки подлинности — смешанный (SQL Server и Windows). Задайте сложный пароль sa.
  5. Разнесите по разным дискам каталоги данных, журналов и tempdb, если дисков несколько.

Шаг 2. Настройки сервера, которые нужны 1С

Выполните в SSMS под администратором. Числа подставьте под свою машину: пример для сервера с 32 ГБ памяти.

-- Ограничить память SQL Server, оставив запас ОС и серверу 1С
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 20480; RECONFIGURE;

-- Отключить параллелизм для одного запроса (рекомендация для OLTP-нагрузки 1С)
EXEC sp_configure 'max degree of parallelism', 1; RECONFIGURE;

Почему так:

  • 🧠 без ограничения памяти SQL Server заберёт почти всю RAM, и рабочие процессы 1С начнут уходить в файл подкачки;
  • 🔀 значение max degree of parallelism = 1 убирает ситуации, когда один тяжёлый отчёт занимает все ядра и тормозит проведение у остальных;
  • 📂 для tempdb создайте несколько файлов данных одинакового размера (по числу ядер, но не больше 8).

Шаг 3. Учётная запись для 1С

Создайте отдельный логин SQL, например user1c, с ролью dbcreator: она позволяет серверу 1С создавать базы. Работать под sa можно, но это лишние права для прикладной программы.

Шаг 4. Создание информационной базы

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

ПолеЗначение
Сервер баз данныхимя сервера или ИМЯ\ЭКЗЕМПЛЯР
Тип СУБДMS SQL Server
База данныхимя базы в SQL, латиницей
Пользователь и пароль сервера БДuser1c и его пароль
Смещение дат2000
Создать базу данных в случае её отсутствияотметить

Смещение 2000 нужно, потому что тип datetime в SQL Server начинается с 1753 года, а 1С хранит «пустую» дату как 01.01.0001. Изменить смещение после создания базы нельзя — только выгрузкой в .dt и загрузкой в новую базу.

Перенос существующей файловой базы: в Конфигураторе файловой базы Администрирование → Выгрузить информационную базу → файл .dt, затем в новой серверной базе Администрирование → Загрузить информационную базу.

Регламентное обслуживание: статистика и индексы

Без обслуживания база на SQL Server постепенно замедляется: статистика устаревает, оптимизатор выбирает плохие планы, индексы фрагментируются. Настройте план обслуживания (Maintenance Plan) в SQL Server Agent. В Express агента нет, задачи запускают через планировщик Windows и sqlcmd.

План обслуживания базы 1С на SQL Server
Выполнено: 0 / 5

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

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

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

Модель восстановления выбирают в свойствах базы в SSMS:

МодельЧто даётКому
Simpleвосстановление на момент полной или разностной копиималые базы, потеря дня работы допустима
Fullвосстановление на любую минуту, есть копии журналарабочие базы, где день работы терять нельзя

Типовая схема для модели Full: полная копия раз в сутки ночью, разностная днём, копия журнала каждые 15–60 минут.

-- Полная копия со сжатием и проверкой контрольных сумм
BACKUP DATABASE [buh_ooo] TO DISK = N'D:\Backup\buh_ooo_full.bak'
WITH COMPRESSION, CHECKSUM, INIT;

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

Сжатие (COMPRESSION) доступно в Standard и выше. В Express параметр не сработает — уберите его из скрипта.

В модели Full без регулярных копий журнала файл .ldf растёт до заполнения диска, после чего база перестаёт принимать изменения. Либо настройте копии журнала, либо переведите базу в Simple.

Восстановление: в SSMS правой кнопкой по узлу «Базы данных» → «Восстановить базу данных», выберите файл .bak и при необходимости цепочку журналов. Восстанавливать удобнее в новую базу с другим именем, а затем подключить её в консоли сервера 1С как отдельную информационную базу. Так рабочая база остаётся нетронутой, пока вы проверяете копию.

💡 Копия, которую ни разу не восстанавливали, — это надежда, а не копия. Раз в месяц разворачивайте бэкап на тестовом сервере и открывайте базу в 1С.

Ошибки связки 1С и SQL Server и что с ними делать

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

Ещё две частые проблемы без явной ошибки:

  • 🐌 Внезапное замедление после переезда на SQL. Обычно это не выставленное ограничение памяти или отсутствие обновления статистики. Проверьте шаг 2 и план обслуживания.
  • 🔄 База медленная только утром. Ночной план обслуживания затянулся до начала рабочего дня. Посмотрите историю заданий SQL Server Agent и сдвиньте расписание.

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

Можно ли поставить SQL Server и сервер 1С на одну машину?
Да, для баз до нескольких десятков пользователей это нормальная схема: меньше сетевых задержек. Обязательно ограничьте память SQL Server, чтобы её хватало рабочим процессам 1С.
SQL Server или PostgreSQL для 1С — что выбрать?
PostgreSQL бесплатна и не требует лицензий Microsoft, но настраивать её сложнее. SQL Server проще в администрировании под Windows и привычнее большинству специалистов. При 20–50 пользователях обе работают сопоставимо при правильной настройке.
Нужно ли покупать лицензию SQL Server, если у нас лицензия сервера 1С?
Да, это разные продукты. Лицензия сервера 1С не включает права на СУБД. Исключение — Express (бесплатна) и runtime-поставка SQL Server вместе с продуктами 1С.
Можно ли открыть таблицы базы 1С в SSMS и посмотреть данные?
Читать можно, но имена таблиц служебные. Сопоставить их с объектами конфигурации помогает метод ПолучитьСтруктуруХраненияБазыДанных() встроенного языка. Изменять данные напрямую нельзя.
Как перенести базу 1С с одного SQL Server на другой?
Сделайте полную копию .bak, восстановите её на новом сервере, а в консоли сервера 1С поправьте в свойствах информационной базы имя сервера БД. Второй путь — выгрузка и загрузка .dt, он медленнее, зато не зависит от версий СУБД.