Сброс пароля sa и администратора MS SQL Server, на котором работают базы 1С
Содержание
Пароль администратора SQL сервера для 1С меняют или удаляют в SQL Server Management Studio: Безопасность → Имена входа → sa → Свойства, либо одной командой ALTER LOGIN sa WITH PASSWORD = '...'. Если войти на сервер не может никто, SQL Server запускают в однопользовательском режиме с параметром -m: в нём локальный администратор Windows получает права sysadmin и задаёт новый пароль.
Какой способ выбрать, зависит от того, что у вас осталось. Есть вход под учётной записью Windows с правами sysadmin — хватит SSMS или sqlcmd за две минуты. Нет никакого входа, но есть права администратора на самом сервере — нужен однопользовательский режим с короткой остановкой службы. После любого способа не забудьте поправить пароль в свойствах информационных баз кластера 1С, иначе пользователи получат ошибку СУБД при входе.
| Ситуация | Способ | Остановка службы SQL |
|---|---|---|
| Есть вход Windows с правами sysadmin | SSMS или T-SQL | Не нужна |
| Помните старый пароль sa | ALTER LOGIN ... OLD_PASSWORD или SSMS | Не нужна |
| Нет ни одного администратора SQL | Однопользовательский режим -m | Нужна, дважды |
| Включён только вход Windows | Смена режима + перезапуск службы | Нужна, один раз |
Сначала проверьте режим аутентификации SQL Server
У SQL Server два режима входа. Режим «Проверка подлинности Windows» пускает только учётные записи Windows, логин sa в нём не работает вовсе. Режим «SQL Server и Windows» (смешанный) пускает и логины SQL, включая sa.
Если сервер стоит в режиме только Windows, менять пароль sa бессмысленно: 1С всё равно не сможет под ним подключиться. Поэтому начните с проверки.
Как узнать режим в Management Studio
- Подключитесь к серверу в SSMS.
- Щёлкните правой кнопкой по имени сервера в обозревателе объектов и выберите
Свойства. - Откройте страницу
Безопасность. - В блоке «Проверка подлинности сервера» отмечен один из двух вариантов.
Смена режима вступает в силу только после перезапуска службы SQL Server. В английской версии SSMS страница называется Security, а режимы — Windows Authentication mode и SQL Server and Windows Authentication mode.
Как узнать режим запросом
SELECT SERVERPROPERTY('IsIntegratedSecurityOnly') AS WindowsOnly;
-- 1 = только вход Windows, 0 = смешанный режим
Этот же запрос пригодится, когда SSMS не установлена и вы работаете через sqlcmd.
Как проверить режим без входа в SQL
Режим хранится в реестре, в параметре LoginMode. Значение 1 — только Windows, 2 — смешанный. Путь зависит от версии и имени экземпляра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer
Здесь MSSQL16 — SQL Server 2022, MSSQL15 — 2019, MSSQL14 — 2017, MSSQL13 — 2016. MSSQLSERVER — имя экземпляра по умолчанию; у именованного экземпляра на его месте будет своё имя.
Правка LoginMode в реестре — крайняя мера, когда войти в SQL нельзя совсем. Значение подхватывается только после перезапуска службы, а перезапуск оборвёт все сеансы 1С на этом сервере.
Как сменить или удалить пароль sa в Management Studio
Нужен вход под учётной записью с ролью sysadmin. Обычно это администратор, который ставил SQL Server: при установке его добавляют в администраторы экземпляра.
- В обозревателе объектов раскройте
Безопасность → Имена входа. - Дважды щёлкните по
sa. - На странице
Общиевведите новый пароль и подтверждение. - Если нужен пароль попроще, снимите флажок «Требовать использование политики паролей». Вместе с ним снимется и «Задать срок окончания действия пароля».
- Перейдите на страницу
Состояние. Проверьте, что «Разрешение на подключение к ядру СУБД» —Предоставить, а «Имя входа» —Включено. - Нажмите
ОК.
Последний пункт часто упускают. После установки SQL Server в режиме только Windows логин sa отключён. Пароль ему можно задать, но войти под ним не получится, пока не включите сам логин.
Можно ли оставить sa без пароля
Технически да: пустой пароль SQL Server принимает, если для логина выключена проверка политики паролей. Но sa с пустым паролем — открытая дверь ко всем базам 1С на сервере. Любой, кто дотянется до порта 1433, получит полный доступ к данным бухгалтерии и зарплаты.
Если цель «удалить пароль» — избавиться от его ввода в 1С, правильнее перевести кластер на вход Windows. Об этом ниже, в разделе про настройку кластера.
Сброс пароля SQL сервера командами T-SQL и sqlcmd
Командная строка удобна, когда SSMS нет на сервере или нужно сделать всё на нескольких экземплярах одинаково.
Сброс из окна запроса
ALTER LOGIN sa WITH PASSWORD = 'Новый_Сложный_Пароль_2x';
ALTER LOGIN sa ENABLE;
Если пароль не проходит политику Windows, SQL Server выдаст ошибку 15118. Тогда либо придумайте пароль сложнее, либо отключите проверку для этого логина:
ALTER LOGIN sa WITH PASSWORD = 'ПростойПароль', CHECK_POLICY = OFF;
Пустой пароль задаётся так же, через PASSWORD = '' и CHECK_POLICY = OFF. Повторю: для сервера, доступного по сети, это плохая идея.
Если логин заблокирован после серии неверных попыток, к команде добавляют UNLOCK:
ALTER LOGIN sa WITH PASSWORD = 'Новый_Сложный_Пароль_2x' UNLOCK;
То же через sqlcmd
sqlcmd ставится вместе с SQL Server. Запустите командную строку от имени администратора:
sqlcmd -S . -E -Q "ALTER LOGIN sa WITH PASSWORD = 'Новый_Сложный_Пароль_2x'; ALTER LOGIN sa ENABLE;"
-S .— локальный экземпляр по умолчанию. Для именованного пишите-S .\ИМЯ, для удалённого —-S имя_сервера.-E— вход под текущей учётной записью Windows.-Q— выполнить запрос и выйти.
Кириллица в пароле, набранном в консоли, может прийти на сервер в другой кодировке. Для пароля sa берите латиницу, цифры и знаки: так он одинаково сработает в sqlcmd, SSMS и консоли кластера 1С.
Если доступа нет ни у кого: однопользовательский режим
Типичная история: SQL Server ставил подрядчик, sa отключён или пароль утерян, а учётной записи Windows с правами sysadmin не осталось. Выход есть, если у вас есть права локального администратора на этом сервере.
В однопользовательском режиме SQL Server пускает члена группы локальных администраторов с правами sysadmin. Этим и пользуются.
Перед началом предупредите пользователей: служба SQL Server будет остановлена дважды, все сеансы 1С на сервере оборвутся. Делайте это вне рабочего времени. Заодно остановите службу «Агент сервера 1С:Предприятия 8.3»: её рабочие процессы сразу займут единственное подключение, и вы не попадёте внутрь.
Пошагово
- Откройте командную строку от имени администратора.
- Остановите службу SQL Server:
net stop MSSQLSERVER
- Запустите её в однопользовательском режиме, разрешив вход только программе sqlcmd:
net start MSSQLSERVER /m"SQLCMD"
- Подключитесь с входом Windows:
sqlcmd -S . -E
- Выполните нужные команды. Удобнее всего добавить свою учётную запись Windows в sysadmin и заодно сбросить sa:
CREATE LOGIN [DOMAIN\ivanov] FROM WINDOWS;
GO
ALTER SERVER ROLE sysadmin ADD MEMBER [DOMAIN\ivanov];
GO
ALTER LOGIN sa WITH PASSWORD = 'Новый_Сложный_Пароль_2x';
GO
ALTER LOGIN sa ENABLE;
GO
EXIT
- Перезапустите службу в обычном режиме:
net stop MSSQLSERVER
net start MSSQLSERVER
- Запустите агент сервера 1С и проверьте вход в базу.
Для именованного экземпляра служба называется MSSQL$ИМЯ, например net start MSSQL$SQL2019 /m"SQLCMD", а подключение — sqlcmd -S .\SQL2019 -E.
Вариант через диспетчер конфигурации
Если удобнее мышкой, параметр -m добавляют в «Диспетчере конфигурации SQL Server». Откройте свойства службы SQL Server, вкладка «Параметры запуска», добавьте -m и перезапустите службу. Минус способа: легко забыть убрать параметр, и сервер останется однопользовательским после следующей перезагрузки.
Что ещё может помешать
- 🔒 Ошибка «вход в однопользовательском режиме уже выполнен» — подключение занял кто-то другой: агент 1С, служба резервного копирования, SSMS на соседнем ПК. Остановите лишние службы и запустите SQL Server заново.
- 🧩 Нет прав на запуск служб — вы не администратор сервера. Здесь нужен тот, у кого эти права есть.
- 🖥️ Сервер в смешанном режиме не был, а задача — вход по sa. Переключите
LoginModeна2до обычного перезапуска из шага 6 или командой ниже, пока вы внутри:
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE',
N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 2;
Что поменять в кластере серверов 1С после сброса пароля
Сам клиент 1С к SQL не подключается. Подключаются рабочие процессы rphost на сервере 1С, и берут они логин и пароль из свойств информационной базы в кластере. Сменили пароль sa — эти свойства устарели.
Обновить пароль в консоли администрирования
- Откройте «Администрирование серверов 1С Предприятия».
- Раскройте
Кластеры → ваш кластер → Информационные базы. - Правой кнопкой по базе →
Свойства. Консоль спросит логин и пароль администратора этой информационной базы 1С. - Замените «Пароль пользователя сервера БД» и, если нужно, самого пользователя.
- Нажмите
ОКи повторите для каждой базы, которая работала под этим логином.
Из командной строки то же самое делает rac infobase update с параметрами --db-user и --db-pwd. Полный список параметров для вашей версии платформы покажет rac infobase help.
Как избавиться от пароля SQL в 1С совсем
Если оставить поле пользователя сервера БД пустым, 1С подключится к MS SQL с проверкой подлинности Windows. Входить будет учётная запись, под которой работает служба агента сервера 1С, обычно USR1CV8 или доменная служебная запись.
Порядок такой:
- В SQL Server создайте имя входа для учётной записи службы 1С:
CREATE LOGIN [DOMAIN\usr1cv8] FROM WINDOWS;. - Дайте ей права: роль
dbcreator, если 1С должна создавать новые базы, иdb_ownerв каждой существующей базе. - В свойствах информационных баз кластера очистите поля пользователя и пароля сервера БД.
- Проверьте вход в каждую базу.
Это и есть безопасное «удаление пароля»: пароля нигде нет, а SQL Server пускает только конкретную служебную учётную запись.
Не путайте с паролем администратора кластера
В консоли 1С есть свои администраторы: администратор центрального сервера и администратор кластера. Это учётные записи 1С, к SQL Server они не относятся, и запросы выше их не сбросят.
Если утерян пароль администратора кластера, не пересоздавайте кластер: вместе с ним пропадут регистрации всех баз. Остановите службу агента 1С в нерабочее время и восстановите файлы настроек кластера из резервной копии каталога srvinfo или обратитесь к тому, кто настраивал сервер.
Как держать доступ под контролем
- 👤 Заведите для 1С отдельный логин вместо sa. Тогда смена пароля sa не затронет базы.
- 🔑 Пароль sa храните в менеджере паролей отдела, а не в заметке на рабочем столе.
- 🛡️ Добавьте в sysadmin минимум две учётные записи Windows. Тогда однопользовательский режим не понадобится, если одна из них станет недоступна.
- 🌐 Закройте порт 1433 на внешнем файрволе: к SQL должны ходить только сервер 1С и администраторы.
Ошибки входа после смены пароля
Большинство проблем выдаёт ошибка 18456 «Login failed for user». Сама по себе она мало что говорит, причину раскрывает код состояния State в журнале ошибок SQL Server. Журнал открывается в SSMS: Управление → Журналы SQL Server.
Ещё одна частая ловушка — сеансы, которые висели до смены пароля. Уже открытые соединения продолжают работать, и проблема проявляется только утром, когда рабочие процессы 1С переподключаются. Поэтому проверяйте вход в базу сразу после изменений, а не ждите жалоб.