Подключение базы 1С к Microsoft SQL Server с нуля
Содержание
Подключить 1С к SQL серверу напрямую из окна запуска нельзя. Между ними стоит сервер 1С:Предприятия: клиенты обращаются к нему, а он по своим учётным данным ходит в Microsoft SQL Server. Поэтому «подключение» сводится к четырём действиям: поставить и настроить SQL Server, поднять кластер 1С, создать в кластере информационную базу с типом СУБД «Microsoft SQL Server» и добавить её в список запуска.
Инструкция для клиент-серверного варианта на платформе 8.3 и Windows Server 2016 или новее. Файловая база так не подключается: её сначала нужно выгрузить в .dt и загрузить уже в серверную.
Какую версию SQL Server выбрать
Жёсткого списка в статье не будет: он меняется с каждым релизом платформы. Правило простое. Откройте документацию к вашей версии платформы (раздел о системных требованиях клиент-серверного варианта) и возьмите версию SQL Server из списка поддерживаемых. Если платформа свежая, а SQL Server старый, соединение может не установиться или база будет работать с ограничениями.
Что учесть при выборе:
- 🧩 Редакция. Для небольших баз хватает Standard. Express ограничен по размеру базы и памяти, для рабочей бухгалтерии на несколько пользователей его берут редко.
- 🖥️ Разрядность. Платформа и сервер 1С должны быть 64-разрядными. SQL Server сегодня выпускается только в 64-разрядном виде.
- 🔤 Сортировка (collation). Нужна нечувствительная к регистру, например
Cyrillic_General_CI_AS. Проверяйте её сразу: сменить сортировку сервера после установки неприятно. - 🧮 Лицензия SQL Server. Это отдельный продукт Microsoft и отдельные деньги: лицензия 1С на него не распространяется.
| Размещение | Когда подходит | Минус |
|---|---|---|
| SQL и сервер 1С на одной машине | до 10–15 пользователей, тесты | Оба сервиса делят память и диск |
| Два сервера: 1С отдельно, SQL отдельно | от 20–30 пользователей, тяжёлые отчёты | Нужна быстрая сеть между ними |
Подготовка машины и установка SQL Server
Ставьте SQL Server на выделенный диск или хотя бы на раздел, где нет файла подкачки Windows. Под файлы данных, журнал транзакций и tempdb лучше развести разные тома. Если дисков один, это не критично для старта, но потом пригодится.
При установке отметьте:
- Компонент Database Engine Services. Полнотекстовый поиск 1С использует свой механизм, он вам не нужен.
- Сортировку
Cyrillic_General_CI_ASна странице Server Configuration → Collation. - Режим проверки подлинности: Mixed Mode, если планируете логин SQL (
saили отдельная учётка для 1С). Режим только Windows подходит не всем сценариям, поэтому проще оставить смешанный. - Администраторов SQL Server: добавьте себя, пароль
saзадайте длинный и сохраните.
После установки откройте SQL Server Configuration Manager:
SQL Server Network Configuration → Protocols for MSSQLSERVER: включите TCP/IP.- В свойствах TCP/IP на вкладке IP Addresses проверьте порт. Для основного экземпляра это
1433. Именованный экземпляр использует динамический порт, и его лучше зафиксировать вручную. - Перезапустите службу SQL Server.
Перезапуск службы SQL Server обрывает все соединения. Если на машине уже работают другие базы, делайте это вне рабочего времени.
Настройки, которые советует 1С
В SSMS откройте свойства сервера (Properties) и поправьте:
Max degree of parallelism—1. Параллельные планы запросов для 1С обычно вредят.Max server memory— оставьте системе 2–4 ГБ. Если SQL и 1С на одной машине, оставьте больше: сервер 1С тоже потребляет память.- Режим восстановления базы — Full, если нужны бэкапы журнала, или Simple, если достаточно полных копий раз в сутки.
Установка сервера 1С:Предприятия
Запустите установщик платформы на машине сервера и отметьте компонент Сервер 1С:Предприятия. Сразу ставьте консоль администрирования серверов, если собираетесь управлять с этой же машины.
Установщик предложит запускать службу от имени локального пользователя USR1CV8. Это нормальный вариант. Если сервер 1С и SQL находятся на разных машинах, учётка службы 1С к SQL не обращается: в SQL заходит логин, заданный в настройках информационной базы.
Проверьте, что служба Агент сервера 1С:Предприятия запущена и стоит автозапуск. По умолчанию она слушает порт 1540, менеджер кластера использует 1541, рабочие процессы получают порты из диапазона 1560–1591. В брандмауэре откройте эти порты на сервере 1С и 1433 на сервере SQL (если машины разные).
Создание логина и прав в SQL Server
Для 1С нужен логин с правами создавать базы. Заходить в базу от имени sa технически можно, но это плохая практика.
- В SSMS: Security → Logins → New Login.
- Тип — SQL Server authentication, задайте имя, например
onec_user, и пароль. - На вкладке Server Roles отметьте
dbcreator, чтобы 1С сама создала базу. - Если базу вы создали в SSMS заранее, дайте логину роль
db_ownerна ней.
Пароль без точек с запятой и кавычек: они ломают строку подключения в некоторых утилитах. Сохраните его в менеджере паролей, потом поменять в кластере придётся вручную.
Создание информационной базы на SQL Server
Основной путь — консоль администрирования серверов 1С.
- Запустите консоль. В дереве правой кнопкой по Центральные серверы 1С:Предприятия выберите Создать → Центральный сервер, укажите имя машины и порт
1540. Если сервер уже добавлен, просто разверните его. - Откройте Кластеры → Local cluster (кластер по умолчанию).
- Правой кнопкой по Информационные базы → Создать → Информационная база.
- Заполните форму:
| Поле | Что вводить |
|---|---|
| Имя | Имя базы в списке 1С, например buh_firma |
| Защищённое соединение | Оставьте «выключено», если нет специальных требований |
| Тип СУБД | Microsoft SQL Server |
| Сервер баз данных | Имя машины SQL или имя\экземпляр |
| База данных | Имя базы в SQL, можно совпадающее с именем |
| Пользователь сервера БД | Логин из предыдущего раздела |
| Пароль | Пароль этого логина |
| Смещение дат | 2000 (для новых баз) |
| Создать базу данных в случае её отсутствия | Поставьте флажок |
- Нажмите OK. Через несколько секунд база появится в списке.
Смещение дат 2000 менять не нужно, если вы не переносите старую базу. При загрузке .dt из базы со смещением 0 параметр обычно выставляют так же, как был у источника.
Второй способ — создать базу из списка запуска клиента: Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации, затем указать «На сервере 1С:Предприятия», кластер сервер:1541 и параметры СУБД. Результат тот же, но консоль показывает больше настроек.
Добавление базы в список запуска и загрузка данных
Чтобы пользователи увидели базу:
- В окне запуска 1С нажмите Добавить → Добавление в список существующей информационной базы.
- Тип размещения — На сервере 1С:Предприятия.
- Кластер:
имя_сервера:1541. Имя информационной базы — то, что вы задали в консоли. - Завершите мастер и выберите способ аутентификации.
Чтобы загрузить данные из файловой базы:
- Откройте файловую базу
в Конфигураторе и выберите Администрирование → Выгрузить информационную базу, сохраните
.dt. - Откройте новую серверную базу в Конфигураторе и выберите Администрирование → Загрузить информационную базу.
Загрузка требует монопольного доступа: закройте другие сеансы. Время зависит от размера: гигабайтная база — вопрос минут, на десятки гигабайт уходят часы.
Max server memory у SQL, чтобы не отнимал всё у сервера 1С.Проверка соединения и поиск ошибок
После создания проверьте три вещи:
- 🔌 В консоли базу видно, и в её свойствах нет красных пометок.
- 👤 Клиент открывает базу и пускает пользователя.
- 🗃️ В SSMS появилась база с нужным именем и она не в состоянии Restoring или Offline.
Если соединение не поднялось, смотрите на текст ошибки.
db_owner на ней.1433 открыт в брандмауэре. С машины 1С выполните проверку порта командой Test-NetConnection имя_SQL -Port 1433 в PowerShell.dbcreator. Либо создайте базу в SSMS и снимите флажок «Создать базу данных в случае её отсутствия».1541 открыт, а имя сервера в клиенте записано в том же виде, в каком он называется в консоли.Ещё одна частая причина: имя SQL-сервера в форме указано коротким именем, а DNS из контекста службы 1С его не разрешает. Попробуйте полное доменное имя или IP.
Что настроить для хорошей скорости
Разовые настройки уже сделаны выше. Остальное — привычки обслуживания.
- 📊 Статистика. Обновляйте её регулярно, лучше ежедневно ночью. Устаревшая статистика — самая частая причина внезапно медленных отчётов.
- 🧱 Индексы. Раз в неделю реорганизуйте или перестраивайте самые фрагментированные. Для большинства небольших баз хватает стандартных планов обслуживания SQL Server.
- 💾 Файлы. Задайте разумный авторост (например, 256–512 МБ) вместо процентного. Процентный на крупной базе даёт долгие паузы.
- 🧠 Память. Следите за тем, чтобы Windows не уходила в своп из-за аппетитов SQL.
- 🚫 Журнал. В режиме Full без бэкапов журнала файл
.ldfрастёт без конца. Либо делайте копии журнала, либо переведите базу в Simple.
Если регламентные задания (закрытие месяца, обновление индексов 1С) идут долго, смотрите не на «оптимизацию», а на нагрузку: в SSMS есть Activity Monitor, он показывает ожидания и блокировки.
Резервное копирование и регулярное обслуживание
Копию данных удобнее делать средствами SQL Server: она быстрее, чем выгрузка в .dt, и содержит точное состояние базы.
Минимальный план:
- Полная копия — раз в сутки ночью.
- Копии журнала транзакций — каждые 15–60 минут, если режим Full.
- Копию кладите на другой диск или другую машину, а не рядом с базой.
- Раз в месяц разворачивайте копию на тестовой базе и убеждайтесь, что она открывается.
Восстановление выполняйте в новую базу (RESTORE DATABASE ... WITH MOVE), а в списке запуска добавьте её отдельной записью. Заменять рабочую базу, не убедившись, что копия живая, нельзя.
Выгрузку в .dt оставьте как второй уровень защиты: раз в неделю, особенно перед обновлением конфигурации. Она переносится между СУБД и версиями без привязки к SQL Server.
Перед обновлением платформы или конфигурации снимите полную копию. Для отката это быстрее, чем разбирать последствия.
Частые вопросы
Можно ли подключить 1С к SQL Server без сервера 1С:Предприятия?
Нужна ли отдельная лицензия на SQL Server?
Можно ли хранить базу 1С на SQL Server Express?
Что делать, если нужно сменить пароль логина SQL, под которым работает база?
Можно ли поменять СУБД у существующей базы?
.dt, создайте новую на нужной СУБД и загрузите данные.