Подтвердить что ты не робот

Msgstr "Невозможно открыть базу данных по умолчанию пользователя. после установки SQL Server Management Studio Express

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

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

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

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

Server = (локальная)\Instance; AttachDbFilename = C:\PathToDatabase\Database.mdf; Integrated Security = True; Пользовательский экземпляр = True;

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

4b9b3361

Ответ 1

Во-первых, попытайтесь изолировать свою проблему:

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

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

EDIT: я добавил пункт 6 выше - это новое в моем собственном списке TODO, когда устранение неполадок этого типа входа завершилось с ошибкой. Но это очень похоже на то, что вы переживаете.

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

Ответ 2

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

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

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

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

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

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

Ответ 3

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

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

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

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

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

Ответ 4

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

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

Ответ 6

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

@Membership.GetUser().ProviderUserKey

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

Ответ 7

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

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

Ответ 8

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

В вашем экземпляре перейдите к Security, а затем в Logins.

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

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