При переходе с 32-разрядной на 64-разрядную платформу «1С:Предприятие» системные администраторы часто сталкиваются с ситуацией, когда 32-битный сервер 1С работает без нареканий, а 64-битный сервер приложений не может подключиться к MS SQL Server либо вообще завершает работу с ошибками прав доступа при старте службы.
В этой статье мы подробно разберем основные причины такого поведения, проанализируем различия в файловой структуре, настроим права доступа к рабочей директории кластера 1С и определим минимально необходимые роли для пользователя СУБД MS SQL Server.
Первое, на что следует обратить внимание — это разделение каталогов установки и хранения служебной информации (информации о кластере и входящих в него информационных базах) в зависимости от разрядности платформы:
Для 32-разрядного сервера 1С данные кластера по умолчанию находятся по пути:
C:\Program Files (x86)\1cv8\srvinfo
Для 64-разрядного сервера 1С данные кластера хранятся в каталоге:
C:\Program Files\1cv8\srvinfo
Если ранее работала 32-битная версия сервера, то при установке 64-битного сервера платформы создается абсолютно новый рабочий каталог. Консоль администрирования 64-разрядного сервера приложений обращается к пустому дереву кластера, в результате чего списки баз и подключений к MS SQL Server кажутся «пропавшими».
Часто в процессе установки 64-разрядной службы сервера 1С инсталлятор выдает ошибку о невозможности запустить службу из-за недостатка прав. Если пропустить запуск службы и попытаться стартовать ее вручную через оснастку Windows, служба может завершать работу сразу после запуска.
Выясним причину: при создании стандартного пользователя USR1CV8 Windows не всегда автоматически предоставляет ему полные права на каталог C:\Program Files\1cv8\srvinfo и все вложенные объекты.
Рассмотрим пошаговый порядок исправления прав доступа:
C:\Program Files\1cv8\.srvinfo и перейдем на вкладку Безопасность.USR1CV8 (или ту учетную запись, от имени которой запускается служба ragent).Кроме того, в локальных политиках безопасности Windows Server (secpol.msc) убедимся, что учетная запись USR1CV8 включена в политику Вход в систему в качестве службы (SeServiceLogonRight).
Если требуется сохранить настройки ранее созданных информационных баз и параметры их подключения к MS SQL Server, перенесем реестр кластера из 32-разрядной директории в 64-разрядную.
Разберем порядок действий:
C:\Program Files (x86)\1cv8\srvinfo в папку C:\Program Files\1cv8\srvinfo (в частности, файлы 1cv8wsrv.lst и вложенные каталоги с файлами 1CV8Clst.lst).USR1CV8 есть права на чтение и запись.Важно: Одновременный запуск 32-разрядного и 64-разрядного серверов 1С на одном физическом сервере без изменения сетевых портов невозможно, так как они будут вешать служебные процессы (ragent, rmngr, rphost) на одни и те же порты по умолчанию (1540, 1541, 1560-1591).
Технически 64-разрядный рабочий процесс 1С (rphost.exe) взаимодействует с MS SQL Server через 64-разрядный OLE DB провайдер. Если 32-разрядный сервер 1С подключался к MS SQL посредством 32-разрядного драйвера, то 64-разрядный процесс 1С не сможет с ним работать.
Убедимся, что в операционной системе установлен 64-разрядный клиентский компонент MS SQL Server: Microsoft SQL Server Native Client x64 или Microsoft OLE DB Driver for SQL Server x64. Без установленного 64-битного драйвера сервер приложений 1С будет выдавать ошибку взаимодействия с СУБД.
Для создания новых информационных баз прямо из консоли администрирования 1С или из тонкого клиента пользователь SQL, под которым сервер 1С подключается к MS SQL Server, должен обладать необходимыми правами на сервере баз данных.
Назначение роли sysadmin решает проблему подключения, но нарушает требования информационной безопасности. Рассмотрим минимально необходимый набор ролей и прав на стороне MS SQL Server:
На уровне сервера MS SQL Server:
dbcreator — дает право серверу 1С автоматически создавать новые базы данных MS SQL при добавлении информационной базы.processadmin — позволяет серверу 1С завершать зависшие соединения и фоновые процессы в СУБД при необходимости.public — базовая роль сервера.На уровне конкретной информационной базы данных MS SQL:
Пользователю SQL должна быть назначена роль db_owner для рабочей базы данных, чтобы платформа 1С могла изменять структуру таблиц, создавать индексы и управлять данными.
Если после настройки прав доступа сервер 1С по-прежнему выдает ошибку авторизации при попытке подключения к MS SQL Server, проанализируем следующие параметры СУБД:
SQL Server Management Studio) на вкладке Security должен быть включен смешанный режим авторизации — SQL Server and Windows Authentication mode.SQL Server Configuration Manager в разделе SQL Server Network Configuration -> Protocols for MSSQLSERVER должен быть включен протокол TCP/IP.SERVER\SQLEXPRESS), служба SQL Server Browser должна быть запущена.Подводя итог: стабильная работа 64-разрядного сервера 1С:Предприятие с MS SQL Server обеспечивается корректными правами пользователя USR1CV8 на папку srvinfo, присутствием 64-битного OLE DB провайдера в Windows и назначением ролей dbcreator и processadmin для служебного пользователя СУБД.