MSSQL Error 15151: Cannot alter the login because it does not exist or no permission
- Команда
ALTER LOGINзавершается ошибкойMsg 15151, Level 16, State 1: Cannot alter the login '%.*ls', because it does not exist or you do not have permission. - Скрипты создания или синхронизации пользователей 1С падают при попытке сопоставления схемы.
- Администратор не может изменить пароль или статус учетной записи (ENABLE/DISABLE).
1. Проверка существования учетной записи на уровне экземпляра
-- Поиск серверного логина (Server Principal)
SELECT name, principal_id, type_desc, is_disabled
FROM sys.server_principals
WHERE name = 'usr1cv8_db';2. Проверка прав текущей сессии
Для модификации логина требуются права ALTER ANY LOGIN или членство в роли sysadmin / securityadmin:
SELECT IS_SRVROLEMEMBER('sysadmin') AS IsSysAdmin;
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name LIKE '%LOGIN%';3. Разделение понятий LOGIN (сервер) и USER (база данных)
Частая ошибка — попытка применить ALTER LOGIN к пользователю базы данных (Database User):
-- Если нужно изменить пользователя внутри базы 1С:
USE your_1c_db;
GO
-- Для пользователя БД используйте ALTER USER:
ALTER USER [usr1cv8] WITH LOGIN = [usr1cv8];4. Корректный синтаксис изменения учетной записи входа
-- Создание логина, если он отсутствует
IF NOT EXISTS (SELECT 1 FROM sys.server_principals WHERE name = 'usr1cv8_db')
CREATE LOGIN [usr1cv8_db] WITH PASSWORD = 'Strong_Password_1C#2026', CHECK_POLICY = ON;
ELSE
ALTER LOGIN [usr1cv8_db] WITH PASSWORD = 'Strong_Password_1C#2026', ENABLE; Частые вопросы (FAQ)
В чем разница между Server Login и Database User?
Login создается на уровне инстанса SQL Server и отвечает за аутентификацию (подключение). User создается внутри конкретной базы данных и отвечает за авторизацию (права доступа к таблицам 1С).
Почему sysadmin получает ошибку 15151 при попытке изменить логин Windows?
Если доменный пользователь был переименован или удален из Active Directory, SQL Server не сможет разрешить SID объекта и вернет ошибку 15151.
Как исправить проблему 'Orphaned Users' (пользователей-сирот) после восстановления базы 1С?
Используйте сопоставление через команду: ALTER USER [username] WITH LOGIN = [loginname]; либо EXEC sp_change_users_login 'Auto_Fix', 'username'.
Можно ли переименовать логин sa при получении ошибки 15151?
Да, но только под учетной записью с правами sysadmin через команду ALTER LOGIN [sa] WITH NAME = [new_sa_name]; предварительно убедившись, что имя sa не занято.