1С на Microsoft SQL Server: от установки СУБД до первой клиент-серверной базы

· 11 мин

Содержание

Частое заблуждение: «пропишу в клиенте 1С адрес SQL Server — и база заработает». Так не бывает. Клиент 1С к SQL напрямую не подключается. Между ними всегда стоит сервер 1С:Предприятия (кластер), и именно он ходит в СУБД. Схема такая: клиент → сервер 1С → Microsoft SQL Server.

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

Что нужно до начала: версии, лицензии и схема

Перед установкой проверьте три вещи.

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

2. Лицензии. Нужны три вида:

  • 🔑 лицензия на сервер 1С:Предприятия (без неё клиент-серверная база не запустится);
  • 👥 клиентские лицензии 1С по числу одновременных пользователей;
  • 🗄 лицензия на сам SQL Server. Бесплатная редакция Express подходит для теста и маленьких баз: у неё ограничение 10 ГБ на файл данных одной базы, а также лимиты по памяти и ядрам.

3. Где что будет стоять. Варианты:

СхемаКогда подходитМинусы
Сервер 1С и SQL Server на одной машинеДо 20–30 пользователей, один физический серверКонкуренция за память, нужно жёстко ограничить SQL
Сервер 1С и SQL Server на разных машинахБольшие базы, много пользователейСеть между ними должна быть быстрой, от 1 Гбит/с
SQL Server в облаке, сервер 1С в офисеПочти никогдаЗадержки сети убивают производительность

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

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

Установщик SQL Server задаёт много вопросов. Для 1С важны пять.

Компоненты

Достаточно Database Engine Services (службы ядра СУБД). Отдельно поставьте SQL Server Management Studio (SSMS) — она скачивается отдельно от СУБД и нужна для администрирования.

Параметры сортировки (collation)

Для русских баз выбирайте Cyrillic_General_CI_AS. Это делается на шаге настройки сервера, вкладка с параметрами сортировки. Если поставить латинскую сортировку, кириллица в запросах будет сравниваться неправильно, а исправить сортировку экземпляра потом можно только переустановкой или сложной перестройкой.

Проверка подлинности

Включите смешанный режим (SQL Server и Windows). Тогда сервер 1С сможет входить в СУБД отдельным SQL-логином. Пароль sa задайте длинный, но в 1С его не используйте.

Каталоги данных

Разнесите файлы, если есть несколько дисков:

  • 📁 файлы данных (.mdf) — на быстрый SSD;
  • 📁 журналы транзакций (.ldf) — на отдельный диск, если возможно;
  • 📁 tempdb — на самый быстрый диск. 1С активно пользуется временными таблицами.

Сетевой протокол

После установки откройте SQL Server Configuration Manager → Сетевая конфигурация SQL Server → протоколы вашего экземпляра. Включите TCP/IP и перезапустите службу SQL Server.

Перезапуск службы SQL Server обрывает все подключения к базам на этом экземпляре. На работающем сервере делайте это вне рабочего времени.

Если SQL Server стоит на отдельной машине, откройте в брандмауэре входящий порт 1433 (для экземпляра по умолчанию) — но только для адреса сервера 1С.

Логин и права: как сервер 1С заходит в СУБД

Сервер 1С подключается к SQL под учётной записью, которую вы укажете при создании базы. Есть два варианта.

SQL-логин (обычный способ). В SSMS: Безопасность → Имена входа → Создать имя входа. Выберите проверку подлинности SQL Server, задайте имя (например, user1c) и пароль.

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

Какие права выдать:

СитуацияРольКомментарий
Базу создаст сам 1Ссерверная роль dbcreator1С создаст базу и станет её владельцем
База уже создана в SSMSdb_owner в этой базеДостаточно для работы и обновлений
«Чтобы точно заработало»sysadminНе делайте так в рабочей среде

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

Создание базы 1С на SQL Server

Базу можно создать из клиента 1С или из консоли кластера. Через клиент удобнее — заодно появится ярлык в списке баз.

Пошаговое создание из окна запуска

  1. Запустите 1С, в окне выбора баз нажмите Добавить.
  2. Выберите Создание новой информационной базы.
  3. Укажите, создать базу из шаблона конфигурации или пустую (пустая нужна, если будете загружать .dt).
  4. Введите имя для списка баз и выберите вариант На сервере 1С:Предприятия.
  5. Заполните параметры подключения (таблица ниже).
  6. Нажмите Далее, затем Готово. Сервер 1С создаст базу в SQL и зарегистрирует её в кластере.
ПолеЧто вписать
Кластер серверов 1С:ПредприятияИмя сервера 1С, например srv1c (или srv1c:1541, если порт нестандартный)
Имя информационной базы в кластереКороткое латиницей, без пробелов: buh_main
Тип СУБДMS SQL Server
Сервер баз данныхИмя сервера SQL; для именованного экземпляра sqlsrv\INSTANCE
Имя базы данныхКак будет называться база в SQL, обычно совпадает с именем в кластере
Пользователь и пароль сервера БДuser1c и его пароль
Смещение дат2000
Создать базу данных в случае её отсутствияВключить, если базы в SQL ещё нет
Установить блокировку регламентных заданийВключить для копий и тестовых баз

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

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

Создание через консоль кластера

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

Перенос файловой базы на SQL Server

Самый надёжный способ перевести файловую базу в клиент-серверный вариант — через выгрузку .dt.

  1. Попросите пользователей выйти из файловой базы.
  2. Откройте её в Конфигураторе: Администрирование → Выгрузить информационную базу. Сохраните файл .dt.
  3. Создайте пустую базу на сервере 1С, как описано выше.
  4. Откройте новую базу в Конфигураторе: Администрирование → Загрузить информационную базу, выберите файл .dt.
  5. После загрузки запустите базу в режиме 1С:Предприятие, проверьте остатки по ключевым счетам и пару последних документов.
  6. Замените ярлыки у пользователей на новую базу, файловую переименуйте или уберите из списка, чтобы в неё никто не вносил данные.

Загрузка .dt полностью заменяет содержимое базы, в которую вы грузите. Проверьте дважды, что открыли в Конфигураторе новую пустую базу, а не рабочую.

Что учесть при переносе:

  • 🧩 конфигурация и данные переедут целиком, включая пользователей 1С и их пароли;
  • 🧩 внешние обработки, подключённые через справочник дополнительных обработок, хранятся в базе и тоже переедут;
  • 🧩 пути к файлам на диске (присоединённые файлы, если они лежат в томах) нужно проверить: сервер 1С должен иметь доступ к этим папкам под своей учётной записью;
  • 🧩 обмены с другими базами могут потребовать перенастройки адресов.

Загрузка .dt в базу на 10–20 ГБ занимает от получаса до нескольких часов. Планируйте её на вечер или выходной.

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

Тексты ошибок приходят от драйвера SQL Server и обычно на английском. По ним можно точно понять причину.

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

Если ошибка возникает только у части пользователей, а у других база открывается — дело почти наверняка не в SQL. Ищите проблему на стороне клиента: версия платформы, ярлык базы, сеть до сервера 1С.

Скорость: настройки SQL Server, которые дают эффект

Базовая установка SQL Server работает, но не под нагрузкой 1С. Вот что настроить сразу.

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

По умолчанию SQL Server забирает почти всю оперативную память. Если на той же машине работает сервер 1С, он начнёт задыхаться. В SSMS: свойства сервера → Память → Максимальный объём памяти сервера.

Ориентир: оставьте операционной системе 3–4 ГБ, серверу 1С — по его фактическому потреблению, остальное отдайте SQL. Пример: на машине 64 ГБ, сервер 1С стабильно занимает 16 ГБ — ставьте SQL около 44 ГБ (64 − 16 − 4 = 44 ГБ, в поле вводится в мегабайтах: 45 056).

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

МодельКогда выбиратьЧто нужно делать
Простая (Simple)Достаточно ночного бэкапа, потеря дня данных допустимаТолько полные копии
Полная (Full)Нужно восстановление на любой момент времениРегулярные копии журнала транзакций, иначе .ldf вырастет до размера диска

Частая история: база в полной модели, копии журнала никто не делает, через полгода диск забит файлом .ldf на сотни гигабайт.

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

Настройте планы обслуживания в SSMS (Управление → Планы обслуживания) или задания агента SQL Server:

  • 🔧 обновление статистики — ежедневно ночью. Устаревшая статистика — частая причина внезапно медленных отчётов;
  • 🔧 реорганизация или перестроение индексов — раз в неделю;
  • 🔧 проверка целостности DBCC CHECKDB — раз в неделю;

Агент SQL Server в редакции Express отсутствует. Там обслуживание запускают через планировщик Windows и sqlcmd.

Пример скрипта обновления статистики для одной базы:

USE buh_main;
EXEC sp_updatestats;

Чего не делать

  • ❌ не включайте Auto Shrink (автосжатие) — оно фрагментирует индексы и тормозит работу;
  • ❌ не сжимайте базу по расписанию «для экономии места» — файл всё равно вырастет снова;
  • ❌ не правьте таблицы 1С напрямую через SQL: структуру и данные база должна менять только через 1С.

Отдельный параметр — Максимальная степень параллелизма (MAXDOP). Для 1С его часто ставят равным 1, потому что типовые запросы мелкие и параллелизм даёт больше ожиданий, чем пользы. На больших базах с тяжёлыми отчётами это решают замером, а не по шаблону.

Защита базы 1С на SQL Server

Клиент-серверная база безопаснее файловой только при правильной настройке. Минимальный набор:

  1. Отдельный логин для 1С с правами только на свои базы. Не sa и не sysadmin.
  2. Порт 1433 закрыт для всех, кроме сервера 1С. Бухгалтерам и интернету доступ к SQL не нужен.
  3. Длинный пароль sa или отключённая учётка sa, если есть другой администратор.
  4. Резервное копирование средствами SQL — полные копии каждую ночь, при полной модели ещё и журнал. Копии хранятся не на том же диске, что база.
  5. Проверка восстановления раз в месяц-квартал: разверните копию в тестовую базу и откройте её через 1С.
  6. Пароли пользователей 1С. Шифрование и логины SQL не спасут, если вход в саму базу 1С без пароля.

Бэкап средствами SQL (.bak) делается без выгона пользователей, в отличие от выгрузки .dt. Для ежедневных копий используйте его, а .dt оставьте для переноса между серверами и разными СУБД.

Пример ручной полной копии:

BACKUP DATABASE buh_main
TO DISK = N'E:\Backup\buh_main_full.bak'
WITH COMPRESSION, CHECKSUM, INIT;

Параметр COMPRESSION поддерживается не во всех редакциях SQL Server. Если команда выдаёт ошибку, уберите его.

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

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