Пароль от SQL Server для базы 1С забыт: где он хранится и как восстановить доступ

· 9 мин

Содержание

Посмотреть пароль 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С Предприятия» на сервере 1С или на машине администратора.
  2. Раскройте Central 1C:Enterprise 8.3 Servers → <имя сервера> → Кластеры → <кластер> → Информационные базы.
  3. Откройте свойства нужной базы. Если на кластере заданы администраторы, консоль запросит их логин и пароль.
  4. Посмотрите поля «Сервер баз данных», «Тип СУБД», «База данных» и «Пользователь сервера БД».

Поле «Пароль пользователя сервера БД» показывается замаскированным. Скопировать его оттуда нельзя, и платформа его не раскрывает. Зато сюда же вы впишете новый пароль после сброса.

💡 Если поле «Пользователь сервера БД» пустое, рабочие процессы подключаются к 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 (так часто бывает после установки), хватит одной команды.

  1. Войдите на сервер SQL под своей учётной записью Windows.
  2. Откройте командную строку от имени администратора.
  3. Выполните (для экземпляра по умолчанию):
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С перестанет подключаться к базам, пока вы не впишете новый пароль в свойства каждой информационной базы. Пользователи увидят ошибку подключения к СУБД. Меняйте пароль вне рабочего времени и сразу обновляйте все базы, которые используют этот логин.

Порядок после смены пароля:

  1. Откройте консоль кластера → свойства информационной базы.
  2. В поле «Пароль пользователя сервера БД» введите новый пароль.
  3. Сохраните и повторите для всех баз с этим логином (их список — в том же 1CV8Clst.lst или в выводе запроса выше).
  4. Проверьте вход в одну из баз через клиент 1С.

Когда прав нет: однопользовательский режим SQL Server

Если ни одна известная учётная запись не имеет прав sysadmin, остаётся штатный механизм Microsoft. В однопользовательском режиме любой член локальной группы «Администраторы» Windows подключается к SQL Server с правами sysadmin.

Остановка службы SQL Server обрывает все сеансы 1С на этом сервере. Предупредите пользователей, дождитесь окончания регламентных заданий и делайте это в нерабочее время.

Пошагово

  1. Войдите на сервер SQL под учётной записью из группы локальных администраторов.
  2. Откройте командную строку от имени администратора и остановите службу:
net stop MSSQLSERVER

Для именованного экземпляра служба называется MSSQL$ИМЯ_ЭКЗЕМПЛЯРА, например MSSQL$SQLEXPRESS. Если запущен SQL Server Agent, система предложит остановить и его.

  1. Запустите службу в однопользовательском режиме и разрешите подключение только из sqlcmd:
net start MSSQLSERVER /m"SQLCMD"

Параметр после /m ограничивает единственное подключение приложением sqlcmd. Иначе это подключение может перехватить другой процесс — например, рабочий процесс 1С или служба мониторинга.

  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 уже заведена как логин, первую строку пропустите.

  1. Выйдите из sqlcmd командой exit и перезапустите службу в обычном режиме:
net stop MSSQLSERVER
net start MSSQLSERVER
  1. Пропишите новый пароль в свойствах информационных баз в консоли кластера 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. 🔑 Отдельный логин для 1С вместо sa. Создайте логин, например user1c, с правами dbcreator и владельца нужных баз. Логин sa после этого можно отключить: подбирают его первым.
  2. 📒 Менеджер паролей с общим доступом. Пароли SQL, администратора кластера и учётной записи службы USR1CV8 храните в корпоративном хранилище, а не в голове одного человека.
  3. 👥 Минимум два sysadmin. Добавьте в роль sysadmin доменную группу администраторов, а не одного сотрудника.
  4. 📝 Журнал смены паролей. Кто, когда и в каких базах менял пароль СУБД.
  5. 🛡 Администраторы кластера 1С. Задайте их в консоли, иначе любой с доступом к консоли увидит параметры подключения ко всем базам.

Таблица ролей, которую стоит завести один раз:

Учётная записьГде используетсяКто знает пароль
user1c (SQL)Свойства информационных базАдминистратор 1С + хранилище
USR1CV8 (Windows)Служба сервера 1САдминистратор сервера
Группа администраторов (Windows)Роль sysadmin в SQL ServerВходят 2+ человека
Администратор кластера 1СКонсоль администрированияАдминистратор 1С + хранилище
Проверка после восстановления доступа
Выполнено: 0 / 5

Частые вопросы

Можно ли узнать пароль SQL через Конфигуратор 1С?
Нет. Конфигуратор работает с базой через сервер 1С и параметров подключения к СУБД не показывает. Они есть только в свойствах базы в консоли кластера.
Если сменить пароль sa, данные в базе 1С пострадают?
Нет. Меняется только способ входа на сервер СУБД. Данные остаются как были, нужно лишь прописать новый пароль в свойствах информационных баз.
Зачем пароль SQL, если нужно просто сделать копию базы?
Не нужен. Выгрузку .dt делают из Конфигуратора под пользователем 1С, а резервную копию SQL — под Windows-учёткой с правами sysadmin.
Что делать, если 1С работает на PostgreSQL, а не на MS SQL?
Принцип тот же: логин и пароль хранятся в свойствах базы в кластере 1С. Пароль пользователя PostgreSQL меняют командой ALTER USER, временно разрешив локальный вход в файле pg_hba.conf.
Почему после смены пароля одна база работает, а другая нет?
Пароль хранится в свойствах каждой информационной базы отдельно. Обновить его нужно во всех базах, которые подключаются под этим логином.