Пароль от SQL Server для базы 1С забыт: где он хранится и как восстановить доступ
Содержание
Посмотреть пароль SQL в 1С в открытом виде нельзя: консоль кластера показывает его звёздочками, а в файлах srvinfo он хранится в закодированном виде. Рабочий путь другой — узнать, под каким логином 1С ходит в SQL Server, задать этому логину новый пароль через sqlcmd и прописать его в свойствах информационной базы.
Типичная ситуация: администратор уволился, базу надо перенести на новый сервер или развернуть копию для тестов, а пароль от sa никто не помнит. Сама 1С при этом работает — значит, пароль где-то сохранён. Достать его можно не всегда, а сбросить — почти всегда.
Где 1С хранит пароль пользователя SQL Server
В клиент-серверном варианте пользователи 1С не подключаются к SQL Server напрямую. Соединение открывают рабочие процессы кластера (rphost). Логин и пароль СУБД для каждой базы хранятся в реестре кластера 1С.
Что лежит на сервере 1С:
- 📁 Каталог реестра кластера:
C:\Program Files\1cv8\srvinfo\reg_1541\(порт в имени папки зависит от порта менеджера кластера, по умолчанию 1541). - 📄 Файл
1CV8Clst.lst— список информационных баз кластера с параметрами подключения к СУБД: имя сервера, тип СУБД, имя базы, логин. - 🔒 Пароль пользователя СУБД в этом файле записан не открытым текстом. Прочитать его блокнотом не получится.
Логин в 1CV8Clst.lst найти можно. Откройте копию файла в текстовом редакторе и поищите имя базы: рядом будут имя SQL-сервера и пользователь, чаще всего sa.
Не редактируйте 1CV8Clst.lst на работающем сервере. Испорченный файл реестра кластера — это все базы кластера, недоступные разом. Работайте только с копией.
Что НЕ содержит пароля SQL:
| Где ищут | Что там на самом деле |
|---|---|
Список баз пользователя (ibases.v8i) | Строка вида Srvr="server";Ref="base"; — без логина и пароля СУБД |
Ярлыки и .v8i-файлы, разосланные пользователям | То же: только сервер 1С и имя базы |
| Пароль пользователя 1С | Это другой пароль, к SQL Server отношения не имеет |
Файловая база (1Cv8.1CD) | SQL Server не используется вовсе |
Как увидеть логин SQL в свойствах информационной базы
Самый простой способ узнать хотя бы логин — консоль администрирования серверов 1С.
- Запустите «Администрирование серверов 1С Предприятия» на сервере 1С или на машине администратора.
- Раскройте
Central 1C:Enterprise 8.3 Servers → <имя сервера> → Кластеры → <кластер> → Информационные базы. - Откройте свойства нужной базы. Если на кластере заданы администраторы, консоль запросит их логин и пароль.
- Посмотрите поля «Сервер баз данных», «Тип СУБД», «База данных» и «Пользователь сервера БД».
Поле «Пароль пользователя сервера БД» показывается замаскированным. Скопировать его оттуда нельзя, и платформа его не раскрывает. Зато сюда же вы впишете новый пароль после сброса.
💡 Если поле «Пользователь сервера БД» пустое, рабочие процессы подключаются к SQL Server по Windows-аутентификации — под учётной записью службы сервера 1С (обычно USR1CV8). Пароль SQL в этом случае не нужен вовсе: доступ к базе даёт права этой учётной записи в SQL Server.
Как узнать логин со стороны SQL Server
Если доступ к консоли кластера тоже потерян, логин видно в активных сеансах SQL Server. Выполните запрос под любой учётной записью с правами VIEW SERVER STATE:
SELECT login_name, host_name, program_name, DB_NAME(database_id) AS db
FROM sys.dm_exec_sessions
WHERE is_user_process = 1
ORDER BY db;
Сеансы с host_name, равным имени сервера 1С, и базой вашей информационной базы — это рабочие процессы 1С. В колонке login_name — тот самый логин.
Сброс пароля sa через sqlcmd, если вы администратор Windows
Чаще всего восстанавливать пароль не нужно: его проще заменить. Если ваша доменная или локальная учётная запись уже входит в роль sysadmin SQL Server (так часто бывает после установки), хватит одной команды.
- Войдите на сервер SQL под своей учётной записью Windows.
- Откройте командную строку от имени администратора.
- Выполните (для экземпляра по умолчанию):
sqlcmd -S localhost -E -Q "ALTER LOGIN sa WITH PASSWORD = N'Nov0e_Slozhnoe_Parol!2'"
Для именованного экземпляра укажите его имя: -S .\SQLEXPRESS или -S SERVERNAME\INSTANCE. Ключ -E означает вход по Windows-аутентификации, пароль sa для этого не нужен.
Если логин sa отключён, включите его тем же способом:
sqlcmd -S localhost -E -Q "ALTER LOGIN sa ENABLE"
После смены пароля 1С перестанет подключаться к базам, пока вы не впишете новый пароль в свойства каждой информационной базы. Пользователи увидят ошибку подключения к СУБД. Меняйте пароль вне рабочего времени и сразу обновляйте все базы, которые используют этот логин.
Порядок после смены пароля:
- Откройте консоль кластера → свойства информационной базы.
- В поле «Пароль пользователя сервера БД» введите новый пароль.
- Сохраните и повторите для всех баз с этим логином (их список — в том же
1CV8Clst.lstили в выводе запроса выше). - Проверьте вход в одну из баз через клиент 1С.
Когда прав нет: однопользовательский режим SQL Server
Если ни одна известная учётная запись не имеет прав sysadmin, остаётся штатный механизм Microsoft. В однопользовательском режиме любой член локальной группы «Администраторы» Windows подключается к SQL Server с правами sysadmin.
Остановка службы SQL Server обрывает все сеансы 1С на этом сервере. Предупредите пользователей, дождитесь окончания регламентных заданий и делайте это в нерабочее время.
Пошагово
- Войдите на сервер SQL под учётной записью из группы локальных администраторов.
- Откройте командную строку от имени администратора и остановите службу:
net stop MSSQLSERVER
Для именованного экземпляра служба называется MSSQL$ИМЯ_ЭКЗЕМПЛЯРА, например MSSQL$SQLEXPRESS. Если запущен SQL Server Agent, система предложит остановить и его.
- Запустите службу в однопользовательском режиме и разрешите подключение только из
sqlcmd:
net start MSSQLSERVER /m"SQLCMD"
Параметр после /m ограничивает единственное подключение приложением sqlcmd. Иначе это подключение может перехватить другой процесс — например, рабочий процесс 1С или служба мониторинга.
- Подключитесь и выдайте права своей учётной записи или смените пароль
sa:
sqlcmd -S localhost -E
CREATE LOGIN [DOMAIN\admin_user] FROM WINDOWS;
ALTER SERVER ROLE sysadmin ADD MEMBER [DOMAIN\admin_user];
ALTER LOGIN sa WITH PASSWORD = N'Nov0e_Slozhnoe_Parol!2';
GO
Если учётная запись Windows уже заведена как логин, первую строку пропустите.
- Выйдите из
sqlcmdкомандойexitи перезапустите службу в обычном режиме:
net stop MSSQLSERVER
net start MSSQLSERVER
- Пропишите новый пароль в свойствах информационных баз в консоли кластера 1С.
Тот же режим можно включить через «Диспетчер конфигурации SQL Server»: в свойствах службы SQL Server на вкладке параметров запуска добавьте -m. Главное — потом удалить параметр, иначе после перезагрузки сервер снова поднимется в однопользовательском режиме и 1С не подключится.
Что из реестра Windows действительно полезно
Пароль sa в реестре не хранится. SQL Server держит у себя только хеш пароля, а 1С пишет пароль в свой реестр кластера, а не в реестр Windows. Поиск строки «password» по regedit ничего не даст.
Но в реестре есть параметр, без которого новый пароль sa не заработает, — режим аутентификации SQL Server. Если включена только Windows-аутентификация, вход по логину sa невозможен в принципе.
Параметр LoginMode лежит в ветке экземпляра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL<версия>.<экземпляр>\MSSQLServer
Значение LoginMode | Что означает |
|---|---|
| 1 | Только Windows-аутентификация, sa не войдёт |
| 2 | Смешанный режим: Windows и логины SQL Server |
Безопаснее менять режим не в реестре, а в SQL Server Management Studio: свойства сервера → страница «Безопасность» → «Проверка подлинности SQL Server и Windows». После изменения режима нужен перезапуск службы — с тем же предупреждением про обрыв сеансов 1С.
💡 ODBC-источники данных (DSN), созданные на сервере для отчётов, тоже не хранят пароль SQL — только имя сервера, базу и способ аутентификации.
Сторонние программы для восстановления пароля: чем рискуете
В сети есть два вида утилит:
- 🔓 программы, которые раскодируют пароли из
1CV8Clst.lst; - 🔨 «восстановители» паролей SQL Server, которые подбирают пароль по хешу из системной базы
master.
Использовать их стоит только на собственном сервере, к которому у вас есть законный доступ. И даже тогда взвесьте риски:
- ⚠️ утилиты из непроверенных источников часто содержат вредоносный код, а запускают их с правами администратора на сервере с бухгалтерской базой;
- ⚠️ для подбора по хешу программе нужен доступ к файлам
master, то есть службу всё равно придётся останавливать; - ⚠️ подбор стойкого пароля может идти сутками и не дать результата.
Однопользовательский режим решает ту же задачу за 10–15 минут штатными средствами Microsoft. Сторонние программы оправданы, только если старый пароль нужно именно узнать — например, им же защищены другие системы и сменить его везде сразу нельзя.
Сохранённые пароли SQL Server Management Studio на компьютере бывшего администратора хранятся зашифрованными средствами Windows и привязаны к его профилю. Достать их без входа под этим профилем не выйдет.
Как не потерять пароль SQL снова
После восстановления доступа наведите порядок, чтобы история не повторилась при следующей смене администратора.
- 🔑 Отдельный логин для 1С вместо
sa. Создайте логин, напримерuser1c, с правамиdbcreatorи владельца нужных баз. Логинsaпосле этого можно отключить: подбирают его первым. - 📒 Менеджер паролей с общим доступом. Пароли SQL, администратора кластера и учётной записи службы
USR1CV8храните в корпоративном хранилище, а не в голове одного человека. - 👥 Минимум два sysadmin. Добавьте в роль
sysadminдоменную группу администраторов, а не одного сотрудника. - 📝 Журнал смены паролей. Кто, когда и в каких базах менял пароль СУБД.
- 🛡 Администраторы кластера 1С. Задайте их в консоли, иначе любой с доступом к консоли увидит параметры подключения ко всем базам.
Таблица ролей, которую стоит завести один раз:
| Учётная запись | Где используется | Кто знает пароль |
|---|---|---|
user1c (SQL) | Свойства информационных баз | Администратор 1С + хранилище |
USR1CV8 (Windows) | Служба сервера 1С | Администратор сервера |
| Группа администраторов (Windows) | Роль sysadmin в SQL Server | Входят 2+ человека |
| Администратор кластера 1С | Консоль администрирования | Администратор 1С + хранилище |