Забыли пароль sa: восстанавливаем доступ к SQL Server с базами 1С
Содержание
Сбросить пароль 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С на этом сервере. Несохранённые документы пропадут, фоновые задания прервутся. Делайте это вне рабочего времени и предупредите пользователей заранее.
2. Сброс пароля sa через SQL Server Management Studio
Это самый мягкий способ: без остановки службы. Он работает, если ваша учётная запись Windows уже имеет роль sysadmin. При установке SQL Server мастер просит добавить администраторов — часто туда попадает тот, кто ставил сервер, или доменная группа админов.
Порядок действий:
- Запустите SSMS от имени администратора (правая кнопка → «Запуск от имени администратора»).
- В окне подключения выберите «Проверка подлинности Windows» и укажите имя экземпляра.
- В обозревателе объектов раскройте
Безопасность → Имена входа(в английской версииSecurity → Logins). - Откройте свойства
saдвойным щелчком. - На странице «Общие» введите новый пароль дважды.
- На странице «Состояние» проверьте: «Имя входа» — «Включено», флажок «Имя входа заблокировано» снят.
- Нажмите «ОК».
То же самое одним запросом (кнопка «Создать запрос»):
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С обрывает сеансы пользователей и фоновые задания — делайте это в согласованное окно.
Запуск через диспетчер конфигурации
- Откройте «Диспетчер конфигурации SQL Server» (SQL Server Configuration Manager).
- В разделе «Службы SQL Server» откройте свойства нужного экземпляра.
- На вкладке «Параметры запуска» добавьте параметр
-mи нажмите «Добавить». - Перезапустите службу.
После работы параметр -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:
- В обозревателе объектов щёлкните правой кнопкой по имени сервера → «Свойства».
- Страница «Безопасность».
- Выберите «Проверка подлинности SQL Server и Windows».
- «ОК», затем перезапустите службу 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С с административными правами).
- Введите новый пароль в поле «Пароль пользователя сервера БД».
- Нажмите «ОК» и повторите для каждой базы, которая работает под этим логином.
Когда баз десятки, удобнее утилита 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С будут получать отказ, поэтому делайте это вечером.