База 1С на Microsoft SQL Server: настройка от сервера до первого запуска
Содержание
Частое заблуждение: «подключить базу 1С к SQL Server» якобы значит настроить ODBC-источник на клиентском компьютере. Для штатной работы это не так. Базу к SQL Server подключает сервер 1С:Предприятия: вы создаёте информационную базу в кластере, указываете там адрес SQL Server, логин и имя базы данных, и дальше пользователи заходят уже в кластер, а не в СУБД.
Поэтому вся работа сводится к трём вещам: подготовить SQL Server, дать 1С учётную запись с нужными правами и зарегистрировать базу в консоли администрирования кластера. ODBC понадобится только для чтения данных сторонними программами, об этом в конце.
Что должно быть готово до начала
Проверьте заранее. Половина «необъяснимых» ошибок при подключении растёт отсюда.
- ✅ Установлен сервер 1С:Предприятия и запущена служба «Агент сервера 1С:Предприятия». Кластер виден в консоли администрирования.
- ✅ Установлен Microsoft SQL Server (на этой же машине или на отдельной). Подойдёт редакция Standard или Express, но у Express жёсткие лимиты: база до 10 ГБ, оперативной памяти до 1 ГБ на экземпляр.
- ✅ Если SQL Server на другой машине, между ней и сервером 1С открыт порт SQL Server. Для экземпляра по умолчанию это TCP 1433.
- ✅ Лицензии (программные или аппаратные) на сервер 1С доступны.
- ✅ Версия платформы поддерживает вашу версию SQL Server. Сверяйтесь с документацией к платформе: новая СУБД со старой платформой — частая причина отказа.
Если SQL Server и сервер 1С стоят на разных машинах, на машине сервера 1С должны быть клиентские библиотеки доступа к SQL Server (драйвер ODBC или Native Client нужной версии). Без них кластер не подключится к СУБД, хотя сеть в порядке.
Настройка SQL Server под 1С
Режим проверки подлинности
Самый простой путь: учётная запись SQL Server с паролем. Для неё экземпляр должен работать в смешанном режиме (Windows и SQL Server Authentication). Проверьте в SQL Server Management Studio: правый клик на сервере → «Свойства» → «Безопасность».
Если режим был «только Windows», после смены перезапустите службу SQL Server. Без перезапуска вход по логину не заработает.
Сеть: TCP/IP и порт
Когда СУБД на отдельном сервере, откройте «Диспетчер конфигурации SQL Server»:
- Раздел «Конфигурация сети SQL Server» → ваш экземпляр.
- Протокол TCP/IP переведите в «Включено».
- В свойствах протокола на вкладке «IP-адреса» найдите порт (по умолчанию 1433).
- Перезапустите службу SQL Server.
Именованный экземпляр (например, SRV-SQL\SQL2019) использует динамический порт и службу SQL Server Browser. Чтобы не гадать, зафиксируйте порт вручную и откройте его в файрволе.
Параметры, которые лучше задать сразу
| Параметр | Что поставить | Зачем |
|---|---|---|
Параллелизм (max degree of parallelism) | 1 | Рекомендация для 1С: меньше сюрпризов с производительностью |
Максимальная память сервера (max server memory) | Общий объём ОЗУ минус запас для ОС и службы 1С | Иначе SQL Server заберёт всю память |
| Сопоставление (collation) базы | Cyrillic_General_CI_AS | Правильная сортировка и сравнение русских строк |
| Модель восстановления | Full или Simple | Full — если нужны копии журнала; Simple — для тестовой базы |
Новую базу 1С создаст сама, а сопоставление она берёт от сервера. Проверить его можно запросом SELECT SERVERPROPERTY('Collation');. Если там не кириллическое, лучше решить это до создания базы: менять потом сложнее.
Учётная запись для 1С и права доступа
Отдельный логин для 1С нужен по двум причинам: не светить пароль sa в настройках кластера и ограничить ущерб, если пароль утечёт.
Создайте логин. В SSMS: «Безопасность» → «Имена входа» → «Создать имя входа». Выберите «Проверка подлинности SQL Server», задайте пароль. Либо запросом:
CREATE LOGIN usr_1c WITH PASSWORD = 'ЗадайтеСвой_Пароль_1!', CHECK_POLICY = ON;
Дальше выбор зависит от сценария.
- 1С сама создаёт базу. Нужна серверная роль
dbcreator: логин сможет создать базу и станет её владельцем. - База уже есть (например, восстановили из бэкапа). Логину нужна роль
db_ownerименно в этой базе, а рольdbcreatorне нужна. - Не хочется разбираться. Роль
sysadminработает, но даёт слишком много прав. Для рабочего сервера используйте её только как временную меру.
-- Вариант 1: 1С создаёт базу сама
ALTER SERVER ROLE dbcreator ADD MEMBER usr_1c;
-- Вариант 2: база уже восстановлена
USE [ИмяБазы];
CREATE USER usr_1c FOR LOGIN usr_1c;
ALTER ROLE db_owner ADD MEMBER usr_1c;
Пароль учётной записи не должен содержать пробелов и странных спецсимволов в начале и конце. Консоль кластера иногда режет такие значения, а ошибка вылезает уже на этапе подключения.
Регистрация базы в консоли кластера 1С
Теперь главный шаг. Откройте «Администрирование серверов 1С:Предприятия» (оснастка консоли кластера).
- Раскройте «Центральные серверы 1С:Предприятия» → ваш сервер → «Кластеры» → нужный кластер → «Информационные базы».
- Правый клик → «Создать» → «Информационная база».
- Заполните поля формы (ниже расшифровка).
- Нажмите «ОК».
Поля формы:
| Поле | Что вписать |
|---|---|
| Имя | Имя базы в списке кластера, без пробелов, латиницей удобнее |
| Описание | Любое, для себя |
| Защищённое соединение | «Выключено», если не настраивали шифрование |
| Сервер баз данных | Имя машины с SQL Server или имя\экземпляр; для нестандартного порта — имя,порт |
| Тип СУБД | Microsoft SQL Server |
| База данных | Имя базы на стороне SQL Server |
| Пользователь сервера БД | Логин, созданный выше (usr_1c) |
| Пароль пользователя БД | Его пароль |
| Смещение дат | 2000 |
| Блокировка регламентных заданий | Не включайте, пока база не готова |
| Создать базу данных в случае её отсутствия | Поставьте, если база новая |
Если база новая, флажок «Создать базу данных в случае её отсутствия» поставьте. Если подключаете восстановленную, флажок не нужен: тогда в поле «База данных» вы указываете точное имя существующей.
Смещение дат задаётся один раз при создании. Для 1С 8.3 ставят 2000. Если подключаете готовую базу, смещение должно совпадать с тем, что было у исходной. Иначе даты в документах «уедут» на 2000 лет.
Как проверить, что подключение работает
Не считайте, что раз форма закрылась без ошибки, всё готово. Проверьте в три приёма.
- В SQL Server. В SSMS в списке баз данных появилась ваша база. В её свойствах владелец и сопоставление такие, как ожидали.
- В консоли кластера. Откройте свойства базы: поля с СУБД и сервером заполнены верно, ошибок в статусе нет.
- Реальный запуск. В списке баз клиента 1С добавьте запись «На сервере 1С:Предприятия»: укажите кластер (
имя_сервераилиимя_сервера:1541) и имя информационной базы. Запустите режим «Конфигуратор» или «1С:Предприятие».
Для проверки в Конфигураторе зайдите в «Администрирование» → «Загрузить информационную базу» (если есть выгрузка .dt) или создайте конфигурацию с нуля через «Конфигурация» → «Открыть конфигурацию». Если загрузка прошла и размер базы в SSMS вырос, соединение рабочее.
Заодно посмотрите в SSMS, под каким логином идут сессии (sys.dm_exec_sessions). Там должен быть ваш usr_1c, а не sa и не учётка Windows.
Типичные ошибки при подключении
Тексты ошибок в консоли длинные, но смысл обычно умещается в одну строку. Ориентируйтесь на ключевые фразы.
db_owner в этой базе или проверьте, что имя базы указано точно, включая регистр, если сопоставление чувствительно к нему.ping имя и доступность порта 1433.dbcreator. Либо выдайте её, либо создайте базу вручную и подключайте как существующую.Ещё один сценарий: подключить существующую базу
Когда нужно переехать с файловой базы или подключить восстановленную копию, есть два пути.
- Через
.dt. Создаёте пустую базу на SQL Server (шаги выше), затем в Конфигураторе: «Администрирование» → «Загрузить информационную базу». Подходит почти всегда и переносит базу между версиями платформы. - Через бэкап SQL. Восстанавливаете
.bakна тот же или новый SQL Server, регистрируете базу в кластере (без флажка «Создать базу данных»), указываете то же имя и смещение дат.
Второй способ быстрее на больших базах, но требует совпадения версии платформы и совпадающего набора расширений. Если сомневаетесь, идите через .dt.
Перед любыми операциями с рабочей базой сделайте резервную копию и согласуйте окно работ с регламентом. Не подключайте копию боевой базы к кластеру с включёнными регламентными заданиями. Копия начнёт рассылать письма и обмениваться данными, как оригинал.
Когда нужен ODBC и как он связан с этой настройкой
Путаница с ODBC возникает из-за соседней задачи: прочитать данные 1С из Excel, Power BI или другой программы. Тут действительно создают ODBC-подключение (в «Источниках данных ODBC» Windows, 64-разрядная версия), указывают сервер SQL, базу и тот же логин.
Но есть оговорка. Таблицы 1С в SQL Server называются техническими именами вроде _Document123, поля — _Fld456. Соответствие делает сама платформа, и читать такие таблицы напрямую неудобно. Для отчётов лучше выгружать данные средствами 1С или через встроенные интерфейсы.
Прямая запись в таблицы базы 1С запросами SQL ломает целостность и снимает базу с поддержки. Чтение допустимо, запись — нет.
Частые вопросы
Можно ли использовать Windows-аутентификацию вместо логина и пароля?
Какой порт открыть для связи сервера 1С с SQL Server?
Нужно ли ставить SQL Server на тот же компьютер, что и сервер 1С?
Почему база создалась, а логин не видит её в списке?
db_owner в этой базе или сделайте его владельцем.