1С на Microsoft SQL Server: от установки СУБД до первой клиент-серверной базы
Содержание
Частое заблуждение: «пропишу в клиенте 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С | серверная роль dbcreator | 1С создаст базу и станет её владельцем |
| База уже создана в SSMS | db_owner в этой базе | Достаточно для работы и обновлений |
| «Чтобы точно заработало» | sysadmin | Не делайте так в рабочей среде |
Пользователям 1С доступ к SQL Server не нужен вообще. Они подключаются к кластеру 1С, а в СУБД ходит только сервер 1С. Если у бухгалтеров есть логины в SQL — это дыра, её стоит закрыть.
Создание базы 1С на SQL Server
Базу можно создать из клиента 1С или из консоли кластера. Через клиент удобнее — заодно появится ярлык в списке баз.
Пошаговое создание из окна запуска
- Запустите 1С, в окне выбора баз нажмите
Добавить. - Выберите
Создание новой информационной базы. - Укажите, создать базу из шаблона конфигурации или пустую (пустая нужна, если будете загружать
.dt). - Введите имя для списка баз и выберите вариант
На сервере 1С:Предприятия. - Заполните параметры подключения (таблица ниже).
- Нажмите
Далее, затемГотово. Сервер 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.
- Попросите пользователей выйти из файловой базы.
- Откройте её в Конфигураторе:
Администрирование→Выгрузить информационную базу. Сохраните файл.dt. - Создайте пустую базу на сервере 1С, как описано выше.
- Откройте новую базу в Конфигураторе:
Администрирование→Загрузить информационную базу, выберите файл.dt. - После загрузки запустите базу в режиме 1С:Предприятие, проверьте остатки по ключевым счетам и пару последних документов.
- Замените ярлыки у пользователей на новую базу, файловую переименуйте или уберите из списка, чтобы в неё никто не вносил данные.
Загрузка .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С с правами только на свои базы. Не
saи неsysadmin. - Порт 1433 закрыт для всех, кроме сервера 1С. Бухгалтерам и интернету доступ к SQL не нужен.
- Длинный пароль
saили отключённая учёткаsa, если есть другой администратор. - Резервное копирование средствами SQL — полные копии каждую ночь, при полной модели ещё и журнал. Копии хранятся не на том же диске, что база.
- Проверка восстановления раз в месяц-квартал: разверните копию в тестовую базу и откройте её через 1С.
- Пароли пользователей 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. Если команда выдаёт ошибку, уберите его.