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 о администрировании базы данных. Что еще мне не хватает?
Ответы
Ответ 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
Это, возможно, не отвечает на ваш вопрос конкретно, но это поможет другим с подобной проблемой
Проблема в том, что по умолчанию ваш пользователь использует базу данных, которая по какой-либо причине недоступна (может быть переименована, удалена, повреждена или...). Чтобы решить эту проблему, просто следуйте приведенным ниже инструкциям.
- Попробуйте войти еще раз, на странице входа есть другие вкладки, выберите "Свойства подключения".
- на вкладке найдите "Подключиться к базе данных" и выберите существующую базу данных, к которой у вас есть доступ, например, tempdb или master
-
После подключения к экземпляру 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, к которому я хотел подключиться (на вкладке Свойства подключения).
Ответ 5
Сначала нажмите Option >> Кнопка "Подключиться к серверу".
Теперь измените соединение с базой данных на любую существующую базу данных на вашем сервере, такую как 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/
Ответ 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
.
Там он дает возможность подключиться к любой базе данных.