Microsoft SQL Server под базой 1С 8.3: версии, редакции, настройка и бэкапы
Содержание
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 поддерживает 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:
- По ядрам — пакеты по 2 ядра, минимум 4 ядра на процессор. Пользователей не считают.
- Сервер + CAL — лицензия на сервер и клиентская лицензия на каждого пользователя или устройство. Выгодно при малом числе пользователей.
- Runtime-лицензии для 1С — SQL Server, который поставляется вместе с продуктами 1С и разрешён только для работы с базами 1С. Обычно это самый дешёвый законный путь для небольшого офиса.
То, что все пользователи заходят через сервер 1С под одной учётной записью, не уменьшает число нужных CAL. По правилам Microsoft считаются реальные люди или устройства, которые работают с данными.
Сервер 1С:Предприятия лицензируется отдельно: лицензия на сервер (32- или 64-разрядный) плюс клиентские лицензии 1С на рабочие места. Без лицензии сервера 1С клиент-серверная база не запустится.
Установка и первичная настройка SQL Server для 1С
Порядок для Windows Server 2016 и новее, когда SQL и сервер 1С стоят на одной машине.
Шаг 1. Установка экземпляра
- Запустите установщик, выберите компонент Database Engine Services. Остальные (Analysis, Reporting, Integration) для 1С не нужны.
- Экземпляр можно оставить по умолчанию
MSSQLSERVER— тогда в 1С указывают просто имя сервера. - Параметры сортировки (collation):
Cyrillic_General_CI_AS. Её предлагает установщик на русской Windows, менять не надо. - Режим проверки подлинности — смешанный (SQL Server и Windows). Задайте сложный пароль
sa. - Разнесите по разным дискам каталоги данных, журналов и
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.
Очистка процедурного кэша после обновления статистики заставляет 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 или PostgreSQL для 1С — что выбрать?
Нужно ли покупать лицензию SQL Server, если у нас лицензия сервера 1С?
Можно ли открыть таблицы базы 1С в SSMS и посмотреть данные?
ПолучитьСтруктуруХраненияБазыДанных() встроенного языка. Изменять данные напрямую нельзя.Как перенести базу 1С с одного SQL Server на другой?
.bak, восстановите её на новом сервере, а в консоли сервера 1С поправьте в свойствах информационной базы имя сервера БД. Второй путь — выгрузка и загрузка .dt, он медленнее, зато не зависит от версий СУБД.