MSSQL Ошибка 4064: Cannot open user default database — Login failed
- Ошибка при входе:
Msg 4064, Level 11, State 1: Cannot open user default database. Login failed. Login failed for user 'username'. - Администратор или служба не могут подключиться к SQL Server через SSMS с настройками по умолчанию.
- Сервис 1С не запускается, если у его системной учетной записи удалена база по умолчанию.
1. Подключение к серверу в обход базы по умолчанию
В окне подключения SQL Server Management Studio (SSMS):
- Нажмите кнопку Options >> в нижнем правом углу.
- Перейдите на вкладку Connection Properties.
- В поле Connect to database вместо
<default>введитеmasterилиtempdb. - Нажмите Connect.
2. Смена базы данных по умолчанию через T-SQL
После успешного подключения переназначьте базу данных по умолчанию на master:
ALTER LOGIN [usr1cv8] WITH DEFAULT_DATABASE = [master];
GO3. Исправление через утилиту командной строки sqlcmd
Если графический интерфейс недоступен, выполните смену базы через консоль:
sqlcmd -S localhost -U sa -P "StrongPassword123!" -d master -Q "ALTER LOGIN [usr1cv8] WITH DEFAULT_DATABASE = [master];"4. Проверка корректности для всех логинов
SELECT name, default_database_name
FROM sys.server_principals
WHERE type IN ('S', 'U');
GO Частые вопросы (FAQ)
Почему возникает ошибка 4064?
Ошибка возникает, если база данных, назначенная для учетной записи как Default Database, была удалена, переименована, переведена в режим Offline или у пользователя были отозваны права на нее.
Безопасно ли устанавливать master в качестве базы по умолчанию?
Да, для административных учетных записей и сервисных логинов рекомендуется устанавливать master или tempdb, так как эти базы всегда доступны при работающем экземпляре СУБД.
Как предотвратить ошибку 4064 при удалении старых баз 1С?
Перед удалением (DROP DATABASE) проверьте список логинов, для которых эта база назначена дефолтной, и переключите их на master.
Влияет ли Default Database на работу пула соединений 1С?
Кластер 1С явно передает имя целевой базы в строке подключения, поэтому ошибка 4064 проявляется только на этапе первичной аутентификации логина сервером СУБД.