Сервер 1С и Microsoft SQL Server: от установки СУБД до первой базы
Содержание
Подключить 1С к SQL Server — значит зарегистрировать информационную базу в кластере сервера 1С:Предприятия и указать в её параметрах тип СУБД MS SQL Server, имя сервера SQL, имя базы и логин SQL. Пользователи к SQL Server напрямую не ходят: с СУБД работает только сервер 1С (его рабочие процессы rphost), а клиенты подключаются к серверу 1С.
Отсюда простое правило выбора. Файловый вариант подходит для 3–5 пользователей и небольшой базы. Когда людей больше 10, база растёт за 5–10 ГБ или нужна надёжная резервная копия без остановки работы — переходят на клиент-серверный вариант с Microsoft SQL Server. Ниже порядок для платформы 8.3 и Windows Server 2016 и новее.
Что подготовить до подключения 1С к SQL Server
Схема из трёх звеньев: клиент 1С → сервер 1С:Предприятия → SQL Server. Сервер 1С и SQL Server можно ставить на одну машину или на разные. Для 20–30 пользователей одной машины обычно хватает, если в ней достаточно памяти и быстрые SSD.
Что нужно заранее:
- 🖥️ Сервер 1С:Предприятия 8.3 нужной разрядности (64-бит), установленный как служба.
- 🔑 Лицензия на сервер 1С — клиентских лицензий для работы в клиент-серверном режиме недостаточно.
- 🗄️ Microsoft SQL Server и лицензия на него. Express бесплатна, но с ограничениями (см. таблицу).
- 👤 Логин SQL Server, под которым сервер 1С будет работать с базой.
- 🔌 Открытые порты: 1540–1541 и диапазон рабочих процессов для 1С, 1433 для SQL Server.
Версию SQL Server сверяйте со списком поддерживаемых СУБД для своего релиза платформы: свежий SQL Server на старой платформе может не заработать. Рабочая связка на сегодня — платформа 8.3.2x и SQL Server 2019 или 2022.
| Редакция SQL Server | Для чего подходит | Ограничения |
|---|---|---|
| Express | Тест, небольшая база до 10 ГБ | Размер одной базы до 10 ГБ, ограничение по памяти и ядрам, нет SQL Server Agent |
| Standard | Рабочий сервер для большинства компаний | Лицензируется по ядрам или по схеме «сервер + CAL» |
| Enterprise | Крупные базы, сотни пользователей | Дорогая, нужна редко |
| Developer | Разработка и тесты | Бесплатна, но использовать в рабочей среде нельзя |
Без SQL Server Agent (его нет в Express) не работают планы обслуживания. Резервные копии и перестроение индексов на Express придётся запускать через планировщик Windows и скрипты sqlcmd.
Установка SQL Server для 1С: параметры, которые потом не поменять
Большинство настроек можно поправить позже. Два параметра лучше выставить правильно сразу, иначе придётся переустанавливать экземпляр.
Параметры мастера установки
- Компоненты: Database Engine Services обязательно. Management Studio (SSMS) ставится отдельно — скачайте и установите её на этот же сервер или на рабочее место администратора.
- Экземпляр: экземпляр по умолчанию (MSSQLSERVER) проще в подключении. Именованный (
SRV-SQL\SQL1C) тоже работает, но требует службы SQL Server Browser. - Параметры сортировки (Collation):
Cyrillic_General_CI_AS. Сортировку экземпляра сменить без переустановки практически нельзя — от неё зависит tempdb, а с ней и запросы 1С с временными таблицами. - Режим проверки подлинности: смешанный (Mixed Mode). Сервер 1С подключается к SQL Server по логину и паролю SQL.
- Каталоги данных: файлы баз, журналы транзакций и tempdb разнесите по разным дискам, если они есть. Хотя бы tempdb и журналы — на SSD.
- На вкладке tempdb мастер сам предложит несколько файлов по числу ядер (до 8). Оставьте так.
После установки
- Откройте SQL Server Configuration Manager →
Сетевая конфигурация SQL Server→ протоколы для вашего экземпляра. Включите TCP/IP и перезапустите службу SQL Server. - В брандмауэре Windows откройте входящий TCP 1433. Для именованного экземпляра — ещё UDP 1434 (SQL Server Browser) или задайте ему фиксированный порт.
- Проверьте вход в SSMS по имени сервера, а не по
localhost, — так же, как будет подключаться 1С.
Перезапуск службы SQL Server обрывает все сеансы 1С на этом сервере. Делайте его до запуска пользователей или в окно обслуживания.
Логин и база данных: создать заранее или доверить серверу 1С
Есть два рабочих варианта. Выбор зависит от того, кто у вас отвечает за SQL Server.
| Вариант | Как | Когда выбирать |
|---|---|---|
| База создаётся из 1С | Логин с ролью dbcreator (или sysadmin), флажок «Создать базу данных в случае её отсутствия» | Один администратор отвечает и за 1С, и за SQL |
| База создаётся в SSMS заранее | Пустая база, логин — владелец базы (db_owner) | SQL обслуживает отдельный администратор, права выдаются строго |
Создать логин можно в SSMS (Безопасность → Имена входа → Создать имя входа) или запросом:
CREATE LOGIN usr1c WITH PASSWORD = 'СложныйПароль_2x!', CHECK_POLICY = ON;
ALTER SERVER ROLE dbcreator ADD MEMBER usr1c;
Если базу создаёте сами, задайте ей ту же сортировку и простую модель восстановления на старте:
CREATE DATABASE buh_main COLLATE Cyrillic_General_CI_AS;
ALTER DATABASE buh_main SET RECOVERY SIMPLE;
ALTER AUTHORIZATION ON DATABASE::buh_main TO usr1c;
Не работайте под sa. Отдельный логин на каждую базу или группу баз упрощает аудит и не отдаёт всю СУБД при утечке пароля.
Подключение 1С к SQL Server: регистрация базы в кластере
Базу регистрируют одним из двух способов. Поля одинаковые, отличается только место ввода.
Способ 1. Из окна запуска 1С. Нажмите Добавить… → Создание новой информационной базы → выберите конфигурацию или «без конфигурации» → вариант расположения «На сервере 1С:Предприятия».
Способ 2. Из консоли кластера. В оснастке «Администрирование серверов 1С Предприятия» раскройте кластер → Информационные базы → Создать → Информационная база. Затем базу добавляют в список у пользователей.
Заполните поля:
| Поле | Что вписать | Пример |
|---|---|---|
| Кластер серверов 1С:Предприятия | Имя сервера 1С (порт 1541 по умолчанию указывать не нужно) | SRV-1C |
| Имя информационной базы в кластере | Короткое латинское имя, его увидят пользователи при подключении | buh_main |
| Защищённое соединение | Выключено, если нет требований безопасности | — |
| Тип СУБД | MS SQL Server | — |
| Сервер баз данных | Имя сервера SQL, для именованного экземпляра — с именем экземпляра | SRV-SQL или SRV-SQL\SQL1C |
| Имя базы данных | Имя базы в SQL Server | buh_main |
| Пользователь сервера БД и пароль | Логин SQL из предыдущего раздела | usr1c |
| Смещение дат | 2000 | — |
| Создать базу данных в случае её отсутствия | Флажок, если базу не создавали в SSMS | — |
| Установить блокировку регламентных заданий | Включите для копии базы, чтобы она не выгружала обмены и не ходила в банк вместо рабочей | — |
Смещение дат 2000 — стандарт для MS SQL Server: оно позволяет хранить в 1С даты раньше 1753 года, которые не поддерживает тип datetime. Смещение задаётся при создании базы и потом не меняется — только через выгрузку и загрузку .dt в новую базу.
После «Готово» сервер 1С подключится к SQL Server, создаст таблицы и откроет пустую базу. Если указали шаблон конфигурации — она загрузится сразу.
Если SQL Server слушает нестандартный порт, укажите его через запятую: SRV-SQL,14330.
Перенос файловой базы 1С на SQL Server
Перенос делается через выгрузку в файл .dt. Конфигурация, данные, пользователи и их права переезжают целиком.
- Предупредите пользователей и попросите всех выйти из базы.
- Откройте файловую базу
в Конфигураторе. Меню
Администрирование → Выгрузить информационную базу…, сохраните файл.dt. - Создайте пустую серверную базу «без конфигурации» по шагам из предыдущего раздела.
- Откройте серверную базу в Конфигураторе. Меню
Администрирование → Загрузить информационную базу…, выберите файл.dt. - Дождитесь окончания загрузки. На базе в 10 ГБ это обычно от 20 минут до пары часов — зависит от дисков.
- Запустите базу в режиме 1С:Предприятие, проверьте пару отчётов (например, оборотно-сальдовую ведомость) и сравните итоги с файловой базой.
- Перенастройте в серверной базе всё, что завязано на путь к файлу: обмены, регламентные задания, внешние обработки на диске.
Загрузка .dt полностью заменяет содержимое базы-приёмника. Проверьте, что в окне Конфигуратора открыта именно новая пустая база, а не рабочая.
Старую файловую базу не удаляйте 1–2 недели. Переименуйте каталог, чтобы в неё случайно не писали, и держите как запасной вариант.
Настройка SQL Server для быстрой работы 1С
Сразу после установки SQL Server настроен «для всех». Под 1С стоит поменять несколько параметров. Все они меняются без перезапуска службы в свойствах сервера в SSMS или запросом.
| Параметр | Значение для 1С | Почему |
|---|---|---|
| Max server memory | Оставьте ОС и серверу 1С 6–8 ГБ, остальное — SQL | Иначе SQL Server заберёт всю память, и rphost начнут сбрасываться в файл подкачки |
| Max degree of parallelism (MAXDOP) | 1 | Рекомендация для 1С: параллельные планы на коротких запросах 1С чаще мешают |
| Автоприращение файлов | Фиксированное, 512–1024 МБ, а не в процентах | Рост на 10% от 100 ГБ — это 10 ГБ за раз и подвисание базы |
| Модель восстановления | Simple или Full (см. ниже) | Определяет, растёт ли журнал транзакций |
Пример по памяти: сервер на 64 ГБ, где стоят и 1С, и SQL Server. Для SQL ставим 52 ГБ (53 248 МБ), остаются 12 ГБ на Windows и рабочие процессы 1С.
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 53248; RECONFIGURE;
EXEC sp_configure 'max degree of parallelism', 1; RECONFIGURE;
Ещё два приёма, которые дают заметный эффект:
- ⚡ Мгновенная инициализация файлов. Дайте учётной записи службы SQL Server право «Выполнение задач по обслуживанию томов» в локальной политике безопасности. Файлы данных будут расти без обнуления.
- ⚡ План электропитания Windows — «Высокая производительность». На «Сбалансированном» процессор сбрасывает частоту, и короткие запросы 1С идут медленнее.
Обслуживание и мониторинг базы 1С на SQL Server
Подключить 1С к SQL Server — половина дела. Без обслуживания через пару месяцев база замедлится, а журнал транзакций займёт весь диск.
Модель восстановления и резервные копии
- Simple. Журнал очищается сам. Восстановить можно только на момент последней полной копии. Подходит, если копия раз в сутки устраивает.
- Full. Можно восстановиться на любую минуту. Но без регулярных копий журнала (каждые 15–60 минут) файл .ldf растёт бесконечно.
Обычная схема для рабочей базы: полная копия ночью, разностная днём, копии журнала каждые 30 минут при модели Full. Копии храните не на том же диске, что и база.
BACKUP DATABASE buh_main TO DISK = 'E:\Backup\buh_main_full.bak' WITH COMPRESSION, CHECKSUM;
Сжатие (COMPRESSION) доступно в Standard и выше и сокращает файл копии в 3–5 раз на типичной базе 1С.
Регламентное обслуживание
В SSMS: Управление → Планы обслуживания. Минимальный набор задач:
- Еженедельно — проверка целостности (
DBCC CHECKDB). - Еженедельно — перестроение или реорганизация индексов.
- Ежедневно — обновление статистики. Устаревшая статистика — частая причина, почему отчёт вдруг стал строиться 5 минут вместо 10 секунд.
- Очистка процедурного кэша после обновления статистики (
DBCC FREEPROCCACHE), чтобы SQL Server построил планы заново.
Перестроение индексов на большой базе нагружает диски и может блокировать таблицы на Standard. Запускайте ночью, когда в базе нет пользователей и регламентных заданий 1С.
Что смотреть каждый день
- 💾 Свободное место на дисках с данными, журналами и копиями.
- 📈 Размер файла .ldf: если растёт при модели Full — не идут копии журнала.
- ⏱️ Ожидания и долгие запросы — монитор активности SSMS и технологический журнал 1С.
- 🔒 Взаимоблокировки и таймауты на управляемых блокировках — в журнале регистрации 1С.
Ошибки подключения 1С к SQL Server
Текст ошибки СУБД 1С показывает как есть, от драйвера SQL Server. По нему почти всегда понятно, где сломалось.
Test-NetConnection SRV-SQL -Port 1433 в PowerShell.Если связь с SQL Server периодически рвётся, а не отсутствует вовсе, смотрите сетевую часть между серверами: антивирус с проверкой трафика, энергосбережение сетевой карты, нестабильный канал. При разнесённых серверах 1С и SQL сеть между ними должна быть не медленнее 1 Гбит/с.