"Невозможно открыть базу данных пользователя по умолчанию. Ошибка входа." после установки SQL Server Management Studio Express - PullRequest
11 голосов
/ 16 декабря 2011

У меня есть база данных в локальном файле, который используется программой.Программа имеет ограниченную функциональность, и мне нужно было выполнить несколько быстрых запросов.Я установил SQL Server Management Studio Express 2005 (SSMSE), подключился к экземпляру SQL Server, прикрепил файл базы данных и запустил запросы.Теперь исходная программа больше не будет подключаться к базе данных.Я получаю сообщение об ошибке:

Невозможно открыть базу данных пользователя по умолчанию.Ошибка входа.Не удалось войти в систему для пользователя «MyComputer \ MyUserName».

Я вернулся в SSMSE и попытался установить базу данных по умолчанию.Я открыл Безопасность, логины, BUILTIN \ Администраторы и BUILTIN \ Users .Под General я установил базу данных по умолчанию для базы данных программы.В User Mappings я проверил, что галочка базы данных отмечена, и что db_datareader и db_datawriter отмечены галочкой.

Программа использует строку подключения:

Сервер = (локальный) \ Экземпляр;AttachDbFilename = C: \ PathToDatabase \ Database.mdf;Комплексная безопасность = True;Экземпляр пользователя = True;

Я знаю все об администрировании базы данных.Что еще мне не хватает?

Ответы [ 8 ]

7 голосов
/ 19 апреля 2016

Это может не отвечать на ваш вопрос конкретно, но это поможет другим с подобной проблемой

Проблема в том, что по умолчанию ваш пользователь использует базу данных, которая по какой-либо причине недоступна (может быть переименована, удалена, повреждена или ...) Для решения проблемы просто следуйте следующей инструкции

  1. Попробуйте войти еще раз, на странице входа есть другие вкладки, выберите «Свойства соединения».
  2. на вкладке найдите «Подключиться к базе данных» и выберите существующую базу данных, к которой у вас есть доступ, например tempdb или master
  3. После подключения к экземпляру SQL Server выполните приведенный ниже TSQL, чтобы назначить имени входа новую базу данных по умолчанию.

    Use master
    GO
    
    ALTER LOGIN [yourloginname] WITH DEFAULT_DATABASE = TempDB
    GO
    

В качестве альтернативы, после подключения измените имя базы данных по умолчанию на master через UI

Статья взята из: http://www.mytechmantra.com/LearnSQLServer/Fix-cannot-open-user-default-database-Login-failed-Login-failed-for-user-SQL-Server-Error/

6 голосов
/ 21 декабря 2011

Сначала попробуйте выделить вашу проблему:

  1. Сделайте резервную копию файла! Некоторые шаги ниже могут, по-видимому, в некоторых случаях приводить к исчезновению файла.
  2. Вы уверены, что подключаетесь к тому же экземпляру через Management Studio, что и программа?
  3. Если возможно, попытайтесь закрыть экземпляр, который вы не ожидаете использовать.
  4. Установите базу данных пользователя по умолчанию на master и попытайтесь выполнить вход в программу.
  5. Попробуйте войти в систему как пользователь через Management Studio - поскольку у вас есть встроенная защита, вы должны открыть Management Studio как пользователь программы.
  6. Используете ли вы "Пользовательские экземпляры" - возможно, не зная об этом? Если это так, это может быть полезно: http://blogs.msdn.com/b/sqlexpress/archive/2006/11/22/connecting-to-sql-express-user-instances-in-management-studio.aspx

Я мало работал с файлами, прикрепляемыми так, как это делает ваша программа, - но вы пишете, что вы также прикрепили БД в Management Studio. Вы пытались отсоединить его там перед запуском вашей программы? Возможно, вы видите, что Management Studio и ваша программа борются за эксклюзивный доступ к MDF-файлу?

РЕДАКТИРОВАТЬ: я добавил пункт 6 выше - это новый в моем собственном списке TODO при устранении неполадок этого типа входа в систему не удалось. Но это очень похоже на то, что вы испытываете.

EDIT2: при первом редактировании новый элемент был добавлен в список. Поэтому цифры в комментариях не соответствуют цифрам в ответе.

2 голосов
/ 20 февраля 2015

Я наконец понял это, и моя ситуация отличается от всех других, о которых я читал сегодня вечером.

Я восстановил свою базу данных из резервной копии.Я знал, что был определенный пользователь для входа, который я использовал, поэтому я создал этого пользователя в SSMS.Однако в базе данных уже был пользователь с таким именем, который вошел с резервной копией.

Поскольку я так много пытался это исправить, я не смог удалить пользователя подБД легко.Я удалил базу данных и восстановил снова.Затем:

  1. Удалите пользователя в разделе Базы данных -> [моя база данных] -> Пользователи
  2. Создайте пользователя снова в Security-> Logins (не под вашей БД, хотя это, вероятно,тоже работает.
  3. Перейдите к вновь созданному пользователю. Выберите свойства. Затем в разделе «Сопоставления пользователей» скажите, чтобы сделать базу данных по умолчанию. Предоставьте ей доступ для чтения и записи.

СводкаУ меня было два пользователя: один, который пришел с БД, и другой, который я создал. Удалите того, кто пришел с БД, и создайте свой собственный.

1 голос
/ 30 апреля 2018

Сначала щелкните Option >> Кнопка приглашения «Connect to Server».

Теперь измените соединение с базой данных на любую существующую базу данных на вашем сервере, такую ​​как master или msdb.

Подробнее

https://blog.sqlauthority.com/2008/11/04/sql-server-fix-error-4064-cannot-open-user-default-database-login-failed-login-failed-for-user/

1 голос
/ 06 июля 2017

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

Это сразу же позволило мне войти, как только я вручную ввел master в качестве базы данных, к которой хотел подключиться (на вкладке Connection Properties).

0 голосов
/ 07 марта 2017

В моем случае я должен был установить правильный путь «подключиться к любой базе данных»:

В вашем случае перейдите к Security, затем к Logins.

Щелкните правой кнопкой мыши там, вы увидите properties, и вы должны нажать Securables.

Там это дает возможность подключиться к любой базе данных.

0 голосов
/ 30 марта 2016

У меня была похожая проблема: мне нужно было просто загрузить утилиту SQL Express, которая может запускать пользовательские экземпляры.SSEUtil - это инструмент, написанный командой Visual Studio для помощи в устранении неполадок в пользовательском экземпляре. Подробнее об этом можно прочитать в файле read me, который устанавливается вместе с утилитой.http://www.microsoft.com/downloads/details.aspx?FamilyID=fa87e828-173f-472e-a85c-27ed01cf6b02&DisplayLang=en.

Надеюсь, это поможет.

0 голосов
/ 11 июня 2015

У меня тоже была такая же проблема, оказалось, что я пытался получить доступ к встроенным классам членства (в виде) и что .Net пытался создать базу данных в папке App_Data:

@Membership.GetUser().ProviderUserKey

Это заставит систему попытаться создать базу данных на основе встроенной системы членства, что может не соответствовать настройке вашей системы.

...