Забыли пароль sa: восстанавливаем доступ к SQL Server с базами 1С

· 10 мин

Содержание

Сбросить пароль SQL Server для 1С можно без потери данных: войдите в SQL Server под учётной записью Windows с правами sysadmin и выполните ALTER LOGIN sa WITH PASSWORD = '...'. Если такой учётной записи нет, запустите службу SQL Server в однопользовательском режиме (-m) — тогда локальный администратор Windows получает права sysadmin и может задать новый пароль через sqlcmd.

Частое заблуждение — что базу придётся переустанавливать или выгружать в .dt. Не придётся. Пароль хранится в настройках входа SQL Server, а не в файлах баз. После сброса остаётся один обязательный шаг, о котором забывают: прописать новый пароль в свойствах каждой информационной базы в кластере 1С. Иначе пользователи увидят ошибку подключения к СУБД.

1. Что проверить перед сбросом пароля SQL

Пять минут подготовки избавят от лишнего перезапуска сервера.

Уточните, кто вы на сервере. Все способы ниже требуют входа в Windows на самом сервере СУБД под учётной записью из группы локальных администраторов. Удалённо, без доступа к серверу, пароль sa не сбросить.

Узнайте имя экземпляра. Откройте services.msc и найдите службу SQL Server:

Служба в спискеЭкземплярКак подключаться
SQL Server (MSSQLSERVER)по умолчанию. или localhost
SQL Server (SQL2019)именованный.\SQL2019

Имя службы для командной строки: MSSQLSERVER для экземпляра по умолчанию и MSSQL$ИМЯ для именованного.

Проверьте, какой логин использует 1С. В консоли кластера откройте свойства любой информационной базы: поле «Пользователь сервера БД» покажет, под кем 1С ходит в SQL. Часто это sa, иногда отдельный логин вроде usr1cv8. Сбрасывать нужно пароль именно этого логина.

Выберите время. Если входа с правами sysadmin нет, понадобится перезапуск службы SQL Server.

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

Перед сбросом пароля
Выполнено: 0 / 5

2. Сброс пароля sa через SQL Server Management Studio

Это самый мягкий способ: без остановки службы. Он работает, если ваша учётная запись Windows уже имеет роль sysadmin. При установке SQL Server мастер просит добавить администраторов — часто туда попадает тот, кто ставил сервер, или доменная группа админов.

Порядок действий:

  1. Запустите SSMS от имени администратора (правая кнопка → «Запуск от имени администратора»).
  2. В окне подключения выберите «Проверка подлинности Windows» и укажите имя экземпляра.
  3. В обозревателе объектов раскройте Безопасность → Имена входа (в английской версии Security → Logins).
  4. Откройте свойства sa двойным щелчком.
  5. На странице «Общие» введите новый пароль дважды.
  6. На странице «Состояние» проверьте: «Имя входа» — «Включено», флажок «Имя входа заблокировано» снят.
  7. Нажмите «ОК».

То же самое одним запросом (кнопка «Создать запрос»):

ALTER LOGIN [sa] WITH PASSWORD = N'Новый_Сложный_Пароль_2x!';
ALTER LOGIN [sa] ENABLE;

Если логин заблокирован после серии неверных попыток, снимите блокировку вместе со сменой пароля — UNLOCK работает только в паре с PASSWORD:

ALTER LOGIN [sa] WITH PASSWORD = N'Новый_Сложный_Пароль_2x!' UNLOCK;

Подключение по Windows прошло, но узел «Имена входа» недоступен или свойства sa не сохраняются? Значит, у вашей учётной записи нет роли sysadmin. Переходите к однопользовательскому режиму.

3. Однопользовательский режим: вход, когда администраторов SQL не осталось

Типичная ситуация: сервер ставил приходящий специалист, пароль sa не записан, своих Windows-логинов в SQL нет. Выход — однопользовательский режим. В нём SQL Server пускает любого члена группы локальных администраторов Windows с правами sysadmin. Принимает только одно подключение.

Почему важно остановить 1С перед запуском

Единственное подключение займёт тот, кто успеет первым. Это может быть рабочий процесс 1С (rphost), агент SQL Server или служба резервного копирования. Тогда вы получите отказ во входе. Поэтому сначала остановите:

  • 🛑 службу «Агент сервера 1С:Предприятия 8.3» (название зависит от версии и разрядности, в списке служб ищите по слову «1С»);
  • 🛑 «Агент SQL Server» (SQL Server Agent) для этого экземпляра;
  • 🛑 сторонние программы резервного копирования и мониторинга, которые подключаются к SQL.

Остановка агента 1С обрывает сеансы пользователей и фоновые задания — делайте это в согласованное окно.

Запуск через диспетчер конфигурации

  1. Откройте «Диспетчер конфигурации SQL Server» (SQL Server Configuration Manager).
  2. В разделе «Службы SQL Server» откройте свойства нужного экземпляра.
  3. На вкладке «Параметры запуска» добавьте параметр -m и нажмите «Добавить».
  4. Перезапустите службу.

После работы параметр -m обязательно удалите и снова перезапустите службу. Иначе следующий запуск снова будет однопользовательским, и 1С не подключится.

Запуск из командной строки

Быстрее — без правки параметров, режим действует до следующего перезапуска. Откройте cmd от имени администратора:

net stop MSSQLSERVER
net start MSSQLSERVER /m"SQLCMD"

Ключ /m"SQLCMD" разрешает единственное подключение только программе sqlcmd. Так его не перехватит посторонний процесс. Для именованного экземпляра замените имя службы, например net start MSSQL$SQL2019 /m"SQLCMD".

Если в командной строке $ мешает, возьмите имя службы в кавычки целиком: net start "MSSQL$SQL2019" /m"SQLCMD".

4. Смена пароля SQL через sqlcmd из командной строки

Служба запущена в однопользовательском режиме. В том же окне cmd (от имени администратора) подключитесь с проверкой подлинности Windows:

sqlcmd -S . -E

Для именованного экземпляра: sqlcmd -S .\SQL2019 -E. Появится приглашение 1>.

Теперь сделайте две вещи: верните себе постоянный доступ и задайте пароль sa.

CREATE LOGIN [ИМЯСЕРВЕРА\Администратор] FROM WINDOWS;
GO
ALTER SERVER ROLE sysadmin ADD MEMBER [ИМЯСЕРВЕРА\Администратор];
GO
ALTER LOGIN [sa] WITH PASSWORD = N'Новый_Сложный_Пароль_2x!' UNLOCK;
GO
ALTER LOGIN [sa] ENABLE;
GO
EXIT

Подставьте свою учётную запись в формате ДОМЕН\пользователь или ИМЯСЕРВЕРА\пользователь. Если такой логин уже существует, первая команда выдаст ошибку — это нормально, переходите ко второй.

Добавить свою учётную запись в sysadmin полезно даже тогда, когда нужен только пароль sa. В следующий раз вы войдёте через SSMS без перезапуска службы.

На SQL Server 2008 R2 и старше команды ALTER SERVER ROLE нет. Там используют EXEC sp_addsrvrolemember 'ИМЯСЕРВЕРА\Администратор', 'sysadmin';.

Затем верните обычный режим и запустите остановленные службы:

net stop MSSQLSERVER
net start MSSQLSERVER
net start SQLSERVERAGENT

После этого запустите агент сервера 1С из services.msc.

Проверьте новый пароль подключением по логину:

sqlcmd -S . -U sa -P "Новый_Сложный_Пароль_2x!" -Q "SELECT @@VERSION"

Вывелась версия сервера — пароль работает.

5. Смешанная проверка подлинности: без неё пароль sa не поможет

Бывает, что пароль сброшен правильно, а вход под sa всё равно не проходит. Причина — сервер работает в режиме «только Windows». В нём логины SQL Server, включая sa, отклоняются при любом пароле. 1С на MS SQL обычно подключается именно SQL-логином, так что смешанный режим нужен.

Как включить в SSMS:

  1. В обозревателе объектов щёлкните правой кнопкой по имени сервера → «Свойства».
  2. Страница «Безопасность».
  3. Выберите «Проверка подлинности SQL Server и Windows».
  4. «ОК», затем перезапустите службу SQL Server.

Без перезапуска настройка не применится. Перезапуск снова оборвёт подключения 1С, так что совместите его с окном из раздела 3.

Если SSMS недоступна, режим меняется в реестре. Параметр LoginMode лежит в ветке экземпляра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer
"LoginMode"=dword:00000002

Значение 2 — смешанный режим, 1 — только Windows. Часть пути MSSQL16.MSSQLSERVER зависит от версии и имени экземпляра: 16 — SQL Server 2022, 15 — 2019, 14 — 2017, 13 — 2016. Найдите свою ветку в редакторе реестра и после правки перезапустите службу.

Перед правкой реестра экспортируйте ветку (Файл → Экспорт). Ошибка в чужом параметре может помешать запуску службы.

6. Новый пароль в консоли кластера 1С

Сервер 1С хранит логин и пароль к СУБД в свойствах каждой информационной базы. Сам он о смене пароля не узнает. Пока данные не обновлены, пользователи при входе получают ошибку вида:

Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Login failed for user 'sa'.

Что сделать:

  1. Откройте «Администрирование серверов 1С Предприятия».
  2. Раскройте Кластеры → (ваш кластер) → Информационные базы.
  3. Откройте свойства базы. Консоль спросит логин и пароль администратора этой информационной базы (пользователь 1С с административными правами).
  4. Введите новый пароль в поле «Пароль пользователя сервера БД».
  5. Нажмите «ОК» и повторите для каждой базы, которая работает под этим логином.

Когда баз десятки, удобнее утилита rac из каталога bin платформы. Команда rac infobase update принимает параметры --db-user и --db-pwd, а для авторизации — --infobase-user и --infobase-pwd. Список баз с их идентификаторами даёт rac infobase summary list --cluster=<id>. Полный синтаксис для вашей версии смотрите в rac help infobase. Для работы rac должна быть запущена служба ras.

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

Проверка: войдите в каждую базу в режиме «1С:Предприятие». Если вход прошёл — пароль подхвачен.

7. Ошибки при сбросе пароля SQL Server и что с ними делать

Сообщения SQL Server часто похожи, но по коду и состоянию (State) в журнале ошибок причину видно точно. Журнал открывается в SSMS: Управление → Журналы SQL Server, либо файл ERRORLOG в папке Log экземпляра.

Диагностика: выберите симптом

Ещё одна ловушка — пароль со спецсимволами в командной строке. Символы %, ^, &, " по-разному обрабатываются в cmd и в параметрах rac. Если пароль принимается в SSMS, но не в скрипте — проблема в экранировании. Для логина 1С проще сразу выбрать пароль из букв, цифр и символов _, -, !, #.

8. Как не потерять пароль SQL снова

Сброс пароля — работа с перезапуском и простоем. Несколько привычек делают её ненужной.

  • 🔑 Отдельный логин для 1С вместо sa. Создайте логин вроде usr1cv8 и используйте его в свойствах баз. Минимально ему нужны роль сервера dbcreator (если базы создаются из консоли 1С) и роль db_owner в базах 1С. Логин sa после этого можно отключить.
  • 👥 Доменная группа в sysadmin. Добавьте в sysadmin группу администраторов, а не конкретного сотрудника. Уволился человек — доступ остался у группы.
  • ⏳ Без истечения срока у сервисного логина. Если для логина 1С включён флажок «Требовать смены пароля» или срок действия по политике, однажды утром все базы перестанут открываться. Для сервисного логина отключите это: ALTER LOGIN [usr1cv8] WITH CHECK_EXPIRATION = OFF;.
  • 🗄️ Менеджер паролей. Пароли sa, логина 1С, администратора кластера и администраторов баз — в корпоративном хранилище паролей, а не в текстовом файле на рабочем столе сервера.
  • 📝 Паспорт сервера. Один документ: имя экземпляра, режим проверки подлинности, какие логины используются какими базами, где лежат резервные копии.

Когда пароль менять планово, а не в аварии, порядок обратный: сначала задайте новый пароль в SQL, сразу затем обновите свойства всех баз в кластере. Между двумя шагами новые подключения 1С будут получать отказ, поэтому делайте это вечером.

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

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