Клиент-серверная база 1С на MS SQL Server: настройка от сервера до первого запуска
Содержание
Первое заблуждение: «надо настроить ODBC и добавить системный DSN». Для обычной клиент-серверной базы это не нужно. Сервер 1С:Предприятия сам подключается к SQL Server родным клиентом СУБД. Нужно настроить SQL Server, завести в нём логин и указать параметры СУБД при создании базы в кластере серверов 1С.
ODBC пригодится в другом случае: когда 1С читает данные из чужой базы как из внешнего источника. К подключению самой информационной базы это не относится.
Ниже порядок действий: от подготовки сервера до диагностики ошибок. Примеры даны для Microsoft SQL Server и платформы 8.3 на Windows.
Что проверить перед настройкой
Пять минут проверок сэкономят час поиска причины, когда что-то не заработает.
- 🖥️ Серверы. Сервер 1С и SQL Server могут стоять на одной машине или на разных. Для рабочей базы лучше разные: у каждого сервиса своя память и свои диски.
- 🔢 Версии. Не каждая версия платформы работает с каждой версией СУБД. Список поддерживаемых СУБД смотрите в документации к вашей платформе, а не угадывайте по возрасту продуктов.
- 🌐 Сеть. Серверы должны видеть друг друга по имени. Проверьте
pingи разрешение имени, а не только IP-адрес. - 🔑 Права администратора. Нужен доступ к SQL Server (администратор СУБД) и к консоли администрирования кластера 1С.
- 💾 Место на диске. Файлы данных и журнала транзакций растут. Заложите запас хотя бы втрое больше ожидаемого размера базы.
Не ставьте SQL Server и сервер 1С на домен-контроллер. Работать будет, но каждое обновление и любая нагрузка превращаются в лотерею.
Подготовка SQL Server к работе с 1С
Настройка СУБД делается один раз для всего сервера. Откройте SQL Server Management Studio и подключитесь под администратором.
Режим проверки подлинности
Самый простой путь для 1С — смешанный режим: SQL Server authentication плюс Windows authentication. В свойствах сервера откройте страницу «Безопасность» и выберите режим со смешанной проверкой. После смены режима сервис SQL Server нужно перезапустить.
Если в компании запрещён логин SQL-типа, кластер можно запустить от доменной учётной записи с доменным логином в СУБД. Но тогда настройка сложнее, и новичку лучше начать со смешанного режима.
Включение TCP/IP
В «Диспетчере конфигурации SQL Server» откройте сетевую конфигурацию экземпляра и включите протокол TCP/IP. По умолчанию именованные экземпляры используют динамические порты, а экземпляр по умолчанию слушает порт 1433.
Для стабильной работы задайте статический порт и не меняйте его на ходу. Тогда правила брандмауэра пишутся один раз.
Параметры сортировки
От них зависит, как СУБД сравнивает строки. Для баз 1С рекомендуется регистронезависимая сортировка. Если вы создаёте базу из консоли кластера, 1С берёт параметры сортировки сервера, поэтому проверьте их при установке SQL Server: поменять потом сложнее.
Память
По умолчанию SQL Server готов занять всю память машины. Если на ней же работает сервер 1С, ограничьте СУБД параметром максимального объёма памяти. Системе и сервисам кластера оставьте не меньше четверти оперативной памяти.
Логин и права: кто создаст базу и кто в неё зайдёт
Здесь чаще всего ошибаются. Есть две роли, и их проще не смешивать.
| Роль | Что делает | Минимальные права |
|---|---|---|
| Администратор базы | Создаёт базу из консоли кластера | Роль сервера dbcreator |
| Рабочий логин кластера | Все обращения 1С к данным | Роль db_owner на этой базе |
Не делайте рабочим логином sa. Он работает, пока не уволится админ или не сменится пароль, а ещё это лишние права для сервиса, который их не просит.
Как создать логин
- В обозревателе объектов откройте «Безопасность» → «Имена входа» и выберите создание нового имени входа.
- Выберите проверку подлинности SQL Server, задайте имя (например,
usr1c) и сложный пароль. - Снимите флажок принудительного истечения срока действия пароля. Иначе однажды утром все пользователи упрутся в ошибку входа, а виноват будет срок действия пароля.
- На странице ролей сервера отметьте
dbcreator. - Если базу вы создаёте заранее вручную, создайте её, сделайте логин владельцем и дайте ему
db_owner.
Для боевой базы удобнее одна пустая база, созданная вручную: вы сразу задаёте расположение файлов и размеры, а не получаете значения по умолчанию на системном диске.
Файлы данных и журнал
Пока SQL Server ставил файлы туда, куда ему сказали при установке, всё работает. Но разнесите файлы данных и журнала транзакций на разные диски, если есть такая возможность. Журнал пишется последовательно, а данные читаются хаотично. Им лучше не мешать друг другу.
Автоприращение задавайте в мегабайтах, а не в процентах. Рост на 10% от базы в 200 ГБ — это 20 ГБ за один раз и долгая пауза у всех пользователей.
Порты и брандмауэр
Если серверы стоят на разных машинах, закройте вопрос с портами до первого запуска.
| Что открыть | Порт по умолчанию | Между чем |
|---|---|---|
| SQL Server | 1433 | Сервер 1С → СУБД |
Агент сервера 1С (ragent) | 1540 | Клиенты → сервер 1С |
Менеджер кластера (rmngr) | 1541 | Клиенты → сервер 1С |
Рабочие процессы (rphost) | диапазон 1560–1591 | Клиенты → сервер 1С |
Клиентам нужно видеть только сервер 1С, а в СУБД обращается один сервер 1С. Поэтому порт 1433 не надо открывать на пользовательские компьютеры. Это и безопаснее, и проще при проверках.
Правило брандмауэра проверяйте командой Test-NetConnection с сервера 1С:
Test-NetConnection -ComputerName sql-srv -Port 1433
Если в ответе TcpTestSucceeded : True, сеть и порт в порядке, и ищите причину дальше.
Создание базы в кластере серверов 1С
Теперь сама регистрация. Откройте консоль администрирования серверов 1С:Предприятия и раскройте нужный кластер.
Пошагово
- Выберите узел «Информационные базы» и создайте новую базу через контекстное меню.
- В поле «Имя» введите имя, под которым база видна пользователям в списке. Только латиница и цифры упрощают жизнь скриптам.
- В поле «Защищённое соединение» оставьте «выключено», если не настроен сертификат. Включать его «на всякий случай» не надо.
- В поле «Сервер баз данных» укажите имя машины с SQL Server. Для именованного экземпляра —
имя_сервера\имя_экземпляра. - Тип СУБД выберите
MS SQL Server. - В поле «База данных» впишите имя базы на стороне СУБД.
- В полях «Пользователь сервера БД» и «Пароль» укажите логин, созданный выше.
- Смещение дат оставьте
2000. - Отметьте «Создать базу данных в случае её отсутствия», только если база ещё не создана вручную.
- Нажмите «ОК» и дождитесь создания.
Смещение дат нельзя менять после создания базы со вставленными данными. Для баз, которые планируется загружать из файла, ставьте 2000.
Что вы получите
Если всё верно, в списке появится новая информационная база. Она пока пустая. Дальше её нужно наполнить: загрузить выгрузку .dt из файловой базы либо создать из шаблона конфигурации. Запускайте это из Конфигуратора с монопольным доступом, пока база не в работе.
Блокировка регламентных заданий
В свойствах созданной базы есть флажок блокировки регламентных заданий. Пока вы переносите данные, включите его. Иначе фоновые задания начнут работать до того, как база будет готова.
Как подключиться к базе с компьютера пользователя
Это второй вопрос по теме: база есть на сервере, а как людям в неё войти.
В списке баз на клиенте нажмите «Добавить» и выберите «На сервере 1С:Предприятия». Затем укажите:
- Кластер серверов — имя сервера 1С (и порт, если он нестандартный);
- Имя информационной базы — то, которое вы задали в консоли кластера.
Для командной строки и ярлыков строка выглядит так:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S sql-1c\base1
Здесь sql-1c — сервер кластера, base1 — имя базы. Обращаетесь вы к серверу 1С, а не к SQL Server напрямую: пользователи с СУБД не общаются вообще.
Нужно, чтобы у пользователя не было прямого доступа к данным в SQL? Так и должно быть. Логин от СУБД знает только кластер.
Если подключение не заработало
Ошибки подключения разбираются по тексту сообщения. Тексты ниже встречаются чаще других.
db_owner.dbcreator. Добавьте её в свойствах имени входа на странице ролей сервера или создайте базу вручную.1540 закрыт. Проверьте службу и правила брандмауэра на машине кластера.Что ещё проверить, если текст ошибки ничего не говорит
- Откройте журнал ошибок SQL Server: сбой входа записывается туда с кодом состояния, он точнее подсказывает причину.
- Проверьте, под какой учётной записью запущена служба кластера и есть ли у неё права на каталог кластера.
- Посмотрите журнал регистрации в консоли кластера, а не только сообщение на экране пользователя.
Настройка производительности соединения
Когда базу подключили, первое, что почувствуют пользователи, это скорость. Большую часть проблем создаёт не 1С, а настройки СУБД.
Что сделать сразу
- 📦 Ограничить память SQL Server. Мы говорили об этом выше. Без лимита СУБД съест память, а сервер 1С окажется в свопе.
- 🧮 Проверить степень параллелизма. Параметр максимальной степени параллелизма по умолчанию не ограничен. Для баз 1С его обычно ставят в
1, а в сложных случаях пробуют малые значения. Проверяйте на своей нагрузке, а не копируйте чужую цифру. - 💽 Файлы
tempdb. Несколько файлов одинакового размера снижают конкуренцию за системные страницы. Начните с числа файлов, равного числу ядер, но не больше восьми. - 🔧 Автоприращение в мегабайтах. Это уже упоминалось, но проверяется после установки в первую очередь.
Обслуживание, без которого базы деградируют
Статистику и индексы нужно обновлять регулярно. Планы запросов строятся по статистике, и устаревшая даёт вместо индексного поиска полное сканирование таблицы. Настройте план обслуживания: обновление статистики каждую ночь и перестроение индексов раз в неделю. Эти регламентные операции выполняют вне рабочих часов.
Отдельно настройте резервное копирование . Для рабочей базы — полная копия плюс копии журнала транзакций. Без копий журнала файл журнала растёт вечно, а при полной модели восстановления это единственный способ его очистить.
Перед любыми изменениями на рабочей базе сделайте резервную копию и согласуйте время с регламентом: часть операций требует остановки пользователей.
Что заметно скажется на скорости
| Настройка | Что даёт | Риск |
|---|---|---|
| Быстрые диски под данные | Меньше задержек при запросах | Стоимость |
| Отдельные диски под журнал | Нет конкуренции записи | Нужна свободная ёмкость |
| Лимит памяти СУБД | Сервер 1С не уходит в своп | Занижение лимита замедлит СУБД |
| Регулярная статистика | Верные планы запросов | Нагрузка во время обслуживания |
Частые вопросы
Нужно ли настраивать ODBC для подключения базы 1С к SQL Server?
Какой логин SQL Server использовать для 1С?
sa. Для создания базы ему нужна роль dbcreator, для работы с базой db_owner.