Как создать клиент-серверную базу 1С в SQL Server: права, параметры и проверка подключения
Переход на клиент-серверный вариант 1С обычно начинается не с настройки производительности, а с более базовой задачи: нужно создать базу в Microsoft SQL Server, дать серверу 1С нужный доступ и убедиться, что пользователи действительно могут с ней работать.
На этом этапе часто допускают две противоположные ошибки. В первом случае учетной записи не хватает прав, и 1С не может создать или открыть базу. Во втором — проблему решают выдачей sysadmin или постоянным использованием sa, хотя такие полномочия приложению не нужны.
Правильнее сначала разделить роли: кто администрирует SQL Server, кто создает базу и под какой учетной записью сервер 1С будет работать с уже созданной информационной базой.
В этой инструкции разберем именно создание новой клиент-серверной базы. Миграцию файловой базы, восстановление .bak и tuning SQL Server оставим за рамками материала.
Как устроена клиент-серверная база 1С
В клиент-серверном варианте пользовательские приложения 1С не работают непосредственно с таблицами Microsoft SQL Server.
Упрощенная схема выглядит так:
Клиент 1С
│
▼
Кластер серверов 1С
│
▼
Microsoft SQL Server
│
▼
База данных 1СПеред созданием базы желательно уже иметь рабочую связку:
- сервер 1С установлен;
- служба сервера 1С запущена;
- Microsoft SQL Server установлен;
- сервер 1С видит SQL Server по сети;
- известны имя экземпляра и фактический TCP-порт;
- выбран способ аутентификации;
- определена учетная запись для работы 1С с СУБД.
Если эти компоненты еще не готовы, сначала имеет смысл закончить базовую установку платформы и SQL Server, а уже затем создавать информационную базу.
Какие права нужны в SQL Server
Самый важный момент — не смешивать права, необходимые для создания базы, и права, необходимые для дальнейшей работы с уже существующей базой.
Это разные задачи.
Права на создание базы
Если база в SQL Server заранее не создана и мы хотим, чтобы ее создала сама 1С, учетной записи потребуются полномочия на создание новой базы на уровне экземпляра SQL Server.
В SQL Server право создать БД можно предоставить несколькими способами — через соответствующие server-level permissions или серверную роль, которая позволяет создавать базы.
Но это не означает, что такие права нужно оставлять навсегда.
После создания информационной базы потребность в расширенном server-level доступе может исчезнуть.
Права для постоянной работы с базой
Когда база уже существует, задача меняется: сервер 1С должен иметь возможность читать и изменять данные, создавать необходимые объекты и выполнять служебные операции в пределах конкретной БД.
При этом постоянный sysadmin для приложения — избыточное решение.
Участник серверной роли sysadmin получает полный контроль над всем экземпляром SQL Server. То же относится к использованию sa как постоянной сервисной учетной записи.
Упрощенно роли лучше разделять так:
SQL Server
├─ административная учетная запись
│ └─ установка, создание БД, обслуживание экземпляра
│
└─ учетная запись сервера 1С
└─ работа только с нужной информационной базойLogin и database user — не одно и то же
В SQL Server есть важное разделение.
Login используется для входа на сам экземпляр SQL Server.
Database user — это пользователь уже внутри конкретной базы данных.
Наличие login еще не означает, что эта учетная запись автоматически имеет доступ к нужной БД.
Поэтому ситуация, когда login существует и пароль правильный, но 1С получает отказ доступа к базе, вполне возможна: пользователь внутри БД может быть не создан или ему не назначены нужные разрешения.
Нужно ли использовать db_owner
Роль db_owner дает полный контроль внутри конкретной базы. Это значительно уже, чем sysadmin, но все равно очень широкие полномочия.
Поэтому универсальное правило «всегда добавляйте учетную запись 1С в db_owner» использовать не стоит.
Конкретный набор разрешений нужно выбирать с учетом версии платформы 1С, сценария работы и принятой в компании модели администрирования.
Как подготовить базу в Microsoft SQL Server
Есть два нормальных сценария: базу заранее создает администратор SQL Server либо ее создает сама 1С при добавлении информационной базы.
Сценарий 1. Базу заранее создает администратор SQL Server
Такой вариант удобен, если SQL Server сопровождает отдельный администратор или в компании действует строгое разделение прав.
Последовательность:
- Администратор SQL Server создает пустую базу.
- Настраивает ее файлы и служебные параметры.
- Создает или использует отдельный login для сервера 1С.
- Сопоставляет login с пользователем в нужной БД.
- Выдает необходимые права только на эту базу.
- Передает администратору 1С имя SQL Server, имя БД и учетные данные.
Создать базу можно через SQL Server Management Studio или T-SQL.
Например:
CREATE DATABASE OneC_Accounting;Название OneC_Accounting здесь только пример.
В рабочей среде имя лучше выбирать заранее по понятному соглашению. Например:
onec_accounting_prod
onec_erp_prod
onec_testНе стоит смешивать в одном имени случайные сокращения, фамилии пользователей и временные пометки вроде new2_final.
Создаем login и пользователя базы
Пример создания SQL login:
CREATE LOGIN onec_service
WITH PASSWORD = 'replace_with_strong_password';В production пароль должен соответствовать политике безопасности компании и не храниться в открытом виде в документации, скриптах общего доступа или репозитории.
После этого в конкретной базе создается database user:
USE OneC_Accounting;
CREATE USER onec_service
FOR LOGIN onec_service;Дальше назначаются разрешения, необходимые именно для работы используемой версии 1С.
Сценарий 2. Базу создает сама 1С
Второй вариант — не создавать БД заранее, а позволить платформе сделать это при добавлении информационной базы.
В этом случае учетной записи, указанной в мастере, временно нужны права на создание базы.
Логика выглядит так:
1С подключается к SQL Server
│
▼
проверяет наличие БД
│
├─ БД есть → подключается
│
└─ БД нет → создаетПосле успешного создания базы расширенные права на уровне экземпляра стоит пересмотреть.
Так сервисная учетная запись не остается способной создавать новые базы без необходимости.
Как добавить клиент-серверную информационную базу в 1С
Когда SQL Server и учетная запись готовы, можно создавать информационную базу со стороны платформы 1С.
Названия отдельных полей могут немного отличаться между версиями платформы, но смысл остается одинаковым.
В мастере создания или добавления информационной базы выбираем клиент-серверный вариант и заполняем параметры.
| Поле | Что означает |
|---|---|
| Кластер серверов | Сервер или кластер 1С, который будет обслуживать информационную базу |
| Имя информационной базы | Имя базы внутри кластера 1С |
| Тип СУБД | Microsoft SQL Server |
| Сервер баз данных | Имя SQL Server или экземпляра |
| База данных | Имя БД в Microsoft SQL Server |
| Пользователь БД | Учетная запись, которой сервер 1С подключается к SQL Server |
| Пароль | Пароль этой учетной записи |
| Создать базу при отсутствии | Используется только если БД должна создать сама 1С |
Как указать сервер SQL Server
Для default instance обычно достаточно имени сервера:
SQLSERVER01Для named instance может использоваться формат:
SQLSERVER01\ONECНо имя экземпляра само по себе еще не гарантирует сетевую доступность. Важно, чтобы сервер 1С мог найти нужный endpoint и подключиться к фактическому TCP-порту.
Имя базы данных
Например:
onec_accounting_prodЕсли база заранее создана администратором SQL Server, имя здесь должно точно совпадать.
Если выбран сценарий создания базы через 1С, это имя будет использовано при создании новой БД.
Какая учетная запись указывается в мастере
Здесь указываются не пользователь информационной базы 1С и не учетная запись обычного сотрудника, а credentials, которые серверная часть 1С использует для доступа к SQL Server.
Как проверить подключение и работу базы
Если база не создается или не подключается, сначала проверяем сам сетевой путь. Нет смысла менять SQL-роли, если сервер 1С физически не может установить TCP-соединение с СУБД.
Сервер 1С
│
├─ разрешается имя SQL Server?
├─ доступен TCP-порт?
├─ отвечает SQL Server?
└─ принимается login/password?Проверку нужно выполнять с сервера 1С, а не со своего рабочего компьютера.
Проверяем разрешение имени
Resolve-DnsName SQLSERVER01Если имя не разрешается, использование этого имени в параметрах 1С также не даст стабильного подключения.
Проверяем TCP-порт
Для default instance часто используется 1433/tcp.
Test-NetConnection SQLSERVER01 -Port 1433Положительный результат может выглядеть так:
ComputerName : SQLSERVER01
RemotePort : 1433
TcpTestSucceeded : TrueЕсли TcpTestSucceeded возвращает False, проверяем:
- запущен ли нужный экземпляр SQL Server;
- включен ли TCP/IP;
- какой порт реально слушает экземпляр;
- разрешен ли этот порт в Windows Firewall;
- есть ли сетевой маршрут между сервером 1С и SQL Server.
Почему локальной проверки недостаточно
SQL Server может нормально открываться через SSMS на самом сервере, но оставаться недоступным с сервера 1С.
SQL Server localhost
│
└─ работает
Сервер 1С ──X── SQL Server
firewall / сеть / портЕсли нужно подробнее разобраться с соединениями между компонентами инфраструктуры 1С, см. материал «Сетевые порты сервера 1С: какие используются, зачем нужны и как проверить их работу».
Как проверить, что база действительно работает
Успешное создание записи в кластере 1С еще не означает, что задача полностью закончена.
Нужно проверить несколько уровней.
База появилась в SQL Server
В SQL Server Management Studio должна появиться соответствующая БД.
Проверить состояние можно и запросом:
SELECT name, state_desc
FROM sys.databases
WHERE name = N'OneC_Accounting';Для нормально доступной базы ожидаем состояние:
ONLINE1С открывает базу
Запускаем информационную базу через клиент 1С.
Если используется новая пустая БД, дальнейший порядок зависит от того, как разворачивается конфигурация — из шаблона, файла .cf, выгрузки .dt или другим штатным способом.
На этом этапе важно убедиться, что сервер 1С действительно может работать с СУБД.
Проверяем операцию чтения и записи
Недостаточно только увидеть информационную базу в списке.
Нужно выполнить безопасную тестовую операцию, которая подтверждает работу чтения и записи. Например:
- открыть конфигуратор;
- выполнить предусмотренное процедурой развертывание конфигурации;
- создать тестовый объект в тестовой среде;
- выполнить типовую операцию записи.
Для production-базы тестовое изменение должно быть заранее согласовано и не должно создавать фиктивные рабочие документы.
Проверяем после перезапуска
Полезно убедиться, что успешное соединение не держится только на уже открытом сеансе.
В подходящее техническое окно:
- Закройте тестовые сеансы.
- Перезапустите нужную службу.
- Снова откройте базу.
- Проверьте доступность SQL Server.
- Посмотрите журналы на предмет новых ошибок.
База создана
│
▼
1С подключилась
│
▼
чтение / запись
│
▼
перезапуск службы
│
▼
повторная проверкаДобавляем базу в резервное копирование
Новая production-база не должна остаться вне действующей backup-политики только потому, что после создания ее забыли добавить в задания резервного копирования.
Проверьте:
- включена ли БД в SQL backup job;
- куда сохраняются резервные копии;
- контролируется ли результат задания;
- предусмотрен ли сценарий восстановления;
- известен ли срок хранения копий.
Типичные ошибки при создании базы 1С в SQL Server
Используют sa как постоянную учетную запись
Технически это может быстро убрать часть ошибок доступа.
Но sa имеет полный контроль над экземпляром SQL Server. Если учетные данные приложения будут скомпрометированы, последствия распространятся не только на одну базу 1С.
Административную и сервисную учетные записи лучше разделять.
Выдают sysadmin, чтобы «точно заработало»
Это может быть диагностическим признаком того, что проблема связана с permissions, но является плохой постоянной конфигурацией.
Если после назначения sysadmin база заработала, следующий шаг — определить, какого права не хватало, и убрать максимальные полномочия.
Login есть, но база его не знает
Например, login:
onec_serviceсуществует на SQL Server, но в конкретной базе нет соответствующего database user.
В итоге подключение к экземпляру проходит, а доступ к БД завершается ошибкой.
Проверяйте сопоставление пользователя в SSMS или системных каталогах SQL Server.
1С должна создать базу, но учетной записи не хватает прав
Если выбран параметр создания базы при отсутствии, учетной записи нужны полномочия на создание БД.
Без них мастер может установить соединение с SQL Server, но завершиться ошибкой уже на этапе создания базы.
SQL Server работает, но сервер 1С не может подключиться
Сначала проверяем сетевой путь:
Test-NetConnection SQLSERVER01 -Port 1433Если TCP-подключения нет, изменение SQL-ролей проблему не исправит.
Сначала сеть и firewall, затем аутентификация и permissions.
Указано неправильное имя instance
Например, реальный экземпляр:
SQLSERVER01\ONECа в настройках указан только:
SQLSERVER01При нескольких экземплярах это может привести к подключению не к тому SQL Server или к полной недоступности.
Базу создали, но забыли про backup
Такая ошибка может проявиться не сразу, а через несколько месяцев — в тот момент, когда понадобится восстановление.
Резервное копирование нужно включать в процедуру ввода новой базы в эксплуатацию, а не оставлять отдельной будущей задачей.
Сразу начинают настраивать производительность
Если база еще нестабильно подключается, бессмысленно начинать с MaxDOP, tempdb, лимитов памяти и планов обслуживания.
Сначала должна надежно работать базовая связка:
1С → сервер 1С → SQL Server → базаПосле этого уже можно переходить к tuning.
Заключение
Создание клиент-серверной базы 1С в Microsoft SQL Server состоит не только из заполнения нескольких полей в мастере.
Нужно заранее определить, кто создает БД, какая учетная запись используется сервером 1С, какие права ей действительно нужны и доступен ли SQL Server по сети с сервера 1С.
Наиболее рискованный путь — решать каждую ошибку выдачей sa или sysadmin. Такой подход скрывает проблему конфигурации доступа и создает лишние полномочия для сервисной учетной записи.
После успешного создания базы обязательно проверяется фактическая работа через 1С: подключение, чтение, запись, повторный запуск после перезапуска служб и включение новой БД в резервное копирование.
Что почитать дальше
Если клиент-серверная база уже создана или инфраструктура еще только готовится, полезны следующие материалы:
- Как настроить SQL Server для 1С и избежать проблем с производительностью — память, tempdb, MaxDOP, файлы базы и обслуживание СУБД.
- Установка сервера 1С на Windows Server — платформа, СУБД, служба сервера и первоначальное развертывание.
- Серверная инфраструктура 1С — как связать сервер 1С, СУБД, сеть, резервное копирование и мониторинг в единую рабочую схему.
- Сетевые порты сервера 1С — какие соединения нужны между клиентами, кластером и СУБД и как проверить их доступность.
Когда стоит обратиться к специалистам
Для одной новой базы в уже подготовленной инфраструктуре процедура обычно достаточно прямолинейна.
Сложнее становится, если SQL Server обслуживает несколько production-баз, действует доменная модель доступа, сервер 1С и СУБД находятся в разных сетевых сегментах или права на SQL Server централизованно контролируются администратором СУБД.
Если клиент-серверную 1С нужно развернуть с нуля или перенести на новую инфраструктуру, можно передать настройку и сопровождение серверной части 1С специалистам IPWAY: сервер 1С, SQL Server, права доступа и резервное копирование в таком случае настраиваются как единая схема.
Кратко
- В клиент-серверной 1С пользователи работают с СУБД через сервер 1С, а не напрямую.
- Права на создание новой базы и права для постоянной работы с существующей БД — разные задачи.
- Не используйте
saиsysadminкак постоянное решение для сервисной учетной записи 1С. - Login SQL Server и database user внутри конкретной базы — разные сущности.
- Перед поиском ошибок permissions проверьте сеть и фактический TCP-порт SQL Server.
- Успешное создание базы нужно подтвердить реальной операцией чтения и записи через 1С.
- После перезапуска служб база должна оставаться доступной.
- Новая production-база должна сразу попасть в действующую схему резервного копирования.