Microsoft SQL Server под 1С:Предприятие 8.3: версия, установка, обслуживание

· 11 мин

Содержание

SQL Server для 1С — это система управления базами данных Microsoft, в которой хранятся все данные клиент-серверной информационной базы 1С:Предприятия 8.3: справочники, документы, регистры, константы. Сама 1С в такой схеме данных не хранит: сервер 1С выполняет код конфигурации и отправляет запросы в SQL Server, а тот записывает и читает таблицы.

Нужен он, когда файловая база перестаёт справляться: от 10–15 одновременных пользователей, при объёме базы в десятки гигабайт, при частых блокировках и «вылетах» на сетевой папке. Связка «сервер 1С + SQL Server» работает быстрее под нагрузкой, переживает обрыв сети у клиента без порчи базы и позволяет делать резервные копии без выгона пользователей.

Зачем 1С сервер SQL и как устроена связка

В файловом варианте база — это один файл 1Cv8.1CD, и каждый клиент сам читает его по сети. В клиент-серверном варианте участников три:

  • 🖥️ Клиент 1С — тонкий клиент, веб-клиент или толстый клиент у пользователя.
  • ⚙️ Сервер 1С:Предприятия — кластер с агентом (порт 1540), менеджером кластера (1541) и рабочими процессами (диапазон портов задаётся в свойствах рабочего сервера, по умолчанию 1560–1591).
  • 🗄️ СУБД — Microsoft SQL Server (или PostgreSQL, IBM Db2, Oracle Database), где лежат таблицы базы.

Клиент обращается к агенту сервера 1С, тот направляет его к рабочему процессу. Рабочий процесс выполняет запрос на языке 1С, переводит его в SQL и отправляет в SQL Server по порту 1433. Пользователь напрямую с SQL Server не общается — ему не нужны ни драйверы, ни доступ к порту СУБД.

Что даёт такая схема на практике:

  • 🔒 транзакции и блокировки обрабатывает СУБД — нет «замков» на файле при одновременном проведении;
  • 📈 нагрузку держит серверное железо, а не сеть до общей папки;
  • 💾 копии делаются средствами SQL Server на лету, с возможностью восстановиться на конкретный момент времени;
  • 🔁 одну базу можно обслуживать регламентами: статистика, индексы, проверка целостности.

Если пользователей 3–5 и база меньше 5 ГБ, файловый режим обычно справляется. Переход на SQL Server ради «солидности» добавит администрирования, но не скорости.

Какую версию SQL Server выбрать для 1С 8.3

Каждый релиз платформы 1С поддерживает определённый набор версий SQL Server — список приводится в системных требованиях к релизу. Для актуальных платформ 8.3.2x рабочий выбор — SQL Server 2019 или 2022. Версии 2016 и 2017 тоже работают, но их поддержка у Microsoft заканчивается, для новой установки их брать нет смысла.

Важнее версии — редакция:

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

Лимит 10 ГБ в Express касается файла данных каждой базы. Когда база его достигает, запись прекращается, и 1С выдаёт ошибку СУБД. Для бухгалтерии с несколькими годами учёта это наступает быстро.

Отдельная тема — лицензирование. SQL Server Standard покупают либо обычной лицензией Microsoft (по ядрам или «сервер + клиентские лицензии»), либо в виде специального продукта для работы только с 1С (лицензия Runtime). Runtime дешевле, но разрешает обращаться к базе только через сервер 1С: подключать к той же базе отчётность Power BI или сторонние программы по такой лицензии нельзя.

Если бюджет на Standard не заложен, посмотрите на PostgreSQL: платформа 1С с ним работает, а сама СУБД бесплатна. Сравнивать варианты лучше заранее, до покупки железа.

Требования к серверу под SQL Server и 1С

Сервер 1С и SQL Server можно поставить на одну машину — для 10–50 пользователей это обычная схема, и сеть между ними не становится узким местом. Разносить по разным серверам имеет смысл при большой нагрузке или при нескольких кластерах 1С.

Ориентиры для одной машины с сервером 1С и SQL Server (Windows Server 2016 и новее):

ПользователейПроцессорПамятьДиски
до 154 ядра16 ГБSSD, отдельный том под базы
15–508 ядер32–64 ГБNVMe или SSD RAID 1/10
50–15016 ядер64–128 ГБраздельные тома под данные, журнал и tempdb

Это стартовые цифры, а не норма: тяжёлые конфигурации вроде ERP или ЗУП с большим штатом съедают ресурсы быстрее.

На что смотреть в первую очередь:

  • 💽 Диски. Для SQL Server важнее задержка, чем объём. Файлы данных (.mdf), журнала (.ldf) и tempdb лучше держать на SSD. HDD под рабочей базой 1С — главная причина «всё тормозит».
  • 🧠 Память. SQL Server по умолчанию забирает почти всю оперативную память. На общей машине с сервером 1С его нужно ограничить, иначе рабочие процессы 1С будут уходить в файл подкачки.
  • ⚡ Электропитание. В Windows включите схему Высокая производительность: в сбалансированном режиме процессор сбрасывает частоту, и запросы выполняются заметно медленнее.

Установка SQL Server для 1С по шагам

Установщик SQL Server одинаков для 2019 и 2022, отличаются только мелкие детали окон. Последовательность такая:

  1. Запустите setup.exe и выберите Установка → Новая установка изолированного экземпляра SQL Server.
  2. На шаге выбора компонентов отметьте Службы ядра СУБД. Полнотекстовый поиск, службы машинного обучения, Analysis Services и Reporting Services для 1С не нужны.
  3. Экземпляр оставьте по умолчанию (MSSQLSERVER). Именованный экземпляр тоже работает, но потребует службы SQL Server Browser и указания имени вида SERVER\INSTANCE при создании базы.
  4. Учётные записи служб оставьте предложенные. Для службы ядра СУБД отметьте право на мгновенную инициализацию файлов — базы будут создаваться и расти быстрее.
  5. На вкладке Параметры сортировки выберите Cyrillic_General_CI_AS. Это главный шаг всей установки.
  6. В разделе проверки подлинности включите смешанный режим и задайте пароль для sa. Сервер 1С подключается к СУБД по логину SQL Server.
  7. На вкладке каталогов данных укажите отдельные папки для пользовательских баз, журналов и резервных копий. Для tempdb установщик предложит число файлов по числу ядер (до 8) — согласитесь.
  8. После установки отдельно поставьте SQL Server Management Studio (SSMS) — это консоль для управления базами.

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

Сетевой доступ к SQL Server

Если сервер 1С стоит на другой машине, откройте Диспетчер конфигурации SQL Server → Сетевая конфигурация SQL Server → Протоколы для MSSQLSERVER и включите TCP/IP. Изменение вступит в силу после перезапуска службы SQL Server — делайте это до подключения пользователей: если базы уже работают, все сеансы 1С оборвутся.

В брандмауэре Windows разрешите входящие подключения на TCP 1433. Для именованного экземпляра дополнительно нужен UDP 1434 (SQL Server Browser) или закреплённый статический порт.

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

Работать под sa удобно, но небезопасно. Создайте отдельный логин SQL Server, например usr1c, и дайте ему серверную роль dbcreator — этого достаточно, чтобы 1С сама создала новую базу. Владельцем созданной базы логин станет автоматически.

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

Подключение базы 1С к SQL Server

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

Базу создают прямо из окна запуска 1С:

  1. В списке баз нажмите Добавить → Создание новой информационной базы, выберите пустую базу или шаблон.
  2. Вариант расположения — На сервере 1С:Предприятия.
  3. Заполните параметры:
    • Кластер серверов 1С:Предприятия — имя машины с сервером 1С (если порт не стандартный — server:1541);
    • Имя информационной базы в кластере — короткое латинское имя, например buh;
    • Тип СУБД — MS SQL Server;
    • Сервер баз данных — имя машины с SQL Server или SERVER\INSTANCE;
    • Имя базы данных — имя базы в SQL Server, удобно совпадает с именем в кластере;
    • Пользователь и пароль сервера БД — логин usr1c;
    • Смещение дат — 2000, это рекомендуемое значение для MS SQL Server.
  4. Отметьте Создать базу данных в случае ее отсутствия и нажмите Далее, затем Готово.

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

Перед первым запуском пользователей
Выполнено: 0 / 6

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

Ошибки СУБД 1С показывает текстом от SQL Server, обычно с префиксом названия драйвера. По этому тексту и ищут причину.

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

После переноса базы на другой экземпляр SQL Server логин внутри базы иногда «отрывается» от серверного логина, и 1С не может войти, хотя пароль верный. В SSMS удалите пользователя внутри базы и заново сопоставьте серверный логин с базой с ролью db_owner.

Как ускорить работу 1С на SQL Server

Большая часть «тормозов» в связке лечится не железом, а тремя настройками и регулярным обслуживанием.

Настройки экземпляра

  • 🧠 Максимальная память сервера (max server memory). На общей машине оставьте операционной системе и серверу 1С не меньше трети памяти. Пример: на 64 ГБ задайте SQL Server около 40 ГБ.
  • 🔀 Максимальная степень параллелизма (MAXDOP). Для 1С традиционно ставят 1: запросы платформы короткие, и параллельные планы чаще мешают, чем помогают.
  • 📂 tempdb. Несколько файлов одинакового размера (по числу ядер, но не больше 8) на быстром диске.
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 40960; RECONFIGURE;
EXEC sp_configure 'max degree of parallelism', 1; RECONFIGURE;

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

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

Без обслуживания база 1С на SQL Server постепенно замедляется: статистика устаревает, и оптимизатор выбирает плохие планы запросов.

ОперацияКак частоЗачем
Обновление статистикиежедневно ночьюоптимизатор видит актуальный объём таблиц
Очистка процедурного кэша после статистикисразу за обновлениемчтобы SQL Server перестроил планы по новой статистике
Реорганизация индексовеженедельноубирает фрагментацию без долгих блокировок
Перестроение индексовраз в 1–4 недели в нерабочее времяполное восстановление индексов, нагружает сервер
Проверка целостности (DBCC CHECKDB)еженедельнораннее обнаружение повреждений

В редакции Standard всё это собирают в план обслуживания в SSMS и запускают через SQL Server Agent. В Express Agent нет — те же команды выполняют через sqlcmd из Планировщика заданий Windows.

Перестроение индексов на большой базе нагружает диски и блокирует таблицы. Запускайте его ночью или в выходные, когда в базе никто не проводит документы.

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

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

Сначала решите, какая модель восстановления нужна:

  • Простая. Только полные (и при желании разностные) копии. Восстановиться можно на момент последней копии. Подходит, если потеря дня работы допустима.
  • Полная. Плюс копии журнала транзакций каждые 15–60 минут. Можно восстановиться на любую минуту, например на момент перед ошибочной обработкой. Но без регулярного бэкапа журнала файл .ldf будет расти бесконечно.

Типовая схема для рабочей базы: полная копия каждую ночь, журнал — каждые 30 минут, хранение 14–30 дней, плюс копия файлов на другой сервер или в облако.

-- полная копия (сжатие недоступно в Express — уберите COMPRESSION)
BACKUP DATABASE [buh]
  TO DISK = N'E:\Backup\buh_full.bak'
  WITH COMPRESSION, CHECKSUM, INIT;

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

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

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

Можно ли поставить SQL Server и сервер 1С на одну машину?
Да, для небольших и средних баз это обычная схема. Обязательно ограничьте память SQL Server, чтобы рабочим процессам 1С хватало оперативной памяти.
Подойдёт ли бесплатная редакция Express для рабочей базы?
Только для маленькой базы, которая не дорастёт до 10 ГБ, и небольшого числа пользователей. Помните, что в Express нет SQL Server Agent и сжатия копий.
Нужна ли лицензия сервера 1С, если уже купили SQL Server?
Да. SQL Server — только СУБД. Для клиент-серверной базы нужна отдельная лицензия на сервер 1С:Предприятия и клиентские лицензии на пользователей.
Можно ли править данные 1С прямыми запросами в SQL Server?
Нельзя. Платформа хранит данные в своей структуре таблиц, и прямые изменения ломают итоги регистров и ссылочную целостность. Для чтения и аналитики используйте средства 1С или выгрузки.
Что выбрать: SQL Server или PostgreSQL?
SQL Server привычнее Windows-администраторам и хорошо документирован, но платный. PostgreSQL бесплатен и работает с платформой 1С, но требует сборки с патчами под 1С и опыта настройки.