"Не удается открыть базу данных Пользователя по умолчанию. Ошибка входа."после установки SQL Server Management Studio Express
У меня есть база данных в локальном файле, который используется программой. Программа имеет ограниченную функциональность, и мне нужно было выполнить несколько быстрых запросов. Я установил SQL Server Management Studio Express 2005 (SSMSE), подключился к экземпляру SQL Server, прикрепил файл базы данных и запустил запросы. Теперь исходная программа больше не будет подключаться к базе данных. Я получаю ошибку:
Не удается открыть базу данных Пользователя по умолчанию. Ошибка входа. Ошибка входа для пользователя 'МойкомпьютерИмя_пользователя'.
Я вернулся в SSMSE и попытался установить базу данных по умолчанию. Я открылбезопасность, логины, встроенныеадминистраторы ивстроенныепользователи . В Разделе General я установил базу данных по умолчанию в базу данных программы. Под пользовательскими отображениями я убедился, что база данных помечена и что db_datareader и db_datawriter отмечены галочками.
Программа использует строку подключения:
Server=(local)Instance; AttachDbFilename=C:PathToDatabaseDatabase.mdf; Integrated Security=True; User Instance=True;
Я знаю Джека-все об администрировании баз данных. Чего еще мне не хватает?
8 ответов:
Во-первых, попробуйте изолировать вашу проблему:
- сделайте резервную копию файла! Некоторые из приведенных ниже шагов могут, по-видимому, в некоторых обстоятельствах привести к исчезновению файла.
- Вы уверены, что подключаетесь к тому же экземпляру через Management Studio, что и программа?
- Если возможно, попробуйте закрыть экземпляр, который вы не собираетесь использовать.
- Установите для базы данных Пользователя по умолчанию значение master и попробуйте выполнить вход в систему программы.
- попробуйте войти в систему как пользователь через Management Studio-поскольку у вас есть встроенная безопасность, Вы должны открыть Management Studio как пользователь программы.
- используете ли вы "пользовательские экземпляры" - возможно, не зная об этом? Если да, то это может быть полезно: http://blogs.msdn.com/b/sqlexpress/archive/2006/11/22/connecting-to-sql-express-user-instances-in-management-studio.aspx
Я не очень много работал с файлами, прикрепляемыми так, как это делает ваша программа, но вы пишете, что вы прикрепили БД в И студия управления тоже. Вы пробовали отсоединить его там перед запуском программы? Возможно, вы видите, как студия управления и ваша программа борются за эксклюзивный доступ к файлу MDF?
EDIT: я добавил пункт 6 выше - это новое в моем собственном списке TODOs при устранении неполадок этого типа входа в систему не удалось. Но это очень похоже на то, что вы сейчас испытываете.
EDIT2: при первом редактировании в список был добавлен новый элемент. Так что цифры в комментариях не совпадают с цифрами в ответе.
Это может быть не ответ на ваш вопрос конкретно, но это поможет другим с подобной проблемой
Проблема заключается в том, что ваш пользователь по умолчанию обращается к базе данных, которая недоступна по любой причине (может быть переименована, удалена, повреждена или ...) Чтобы решить эту проблему, просто следуйте следующей инструкции
- попробуйте войти еще раз на странице входа есть другие вкладки выбрать "свойства подключения".
- на вкладке найдите пункт "подключиться к базе данных" и выберите существующую базу данных. у вас есть доступ к like tempdb или master
После подключения к экземпляру SQL Server выполните нижеприведенный TSQL для назначения имени входа новой базы данных по умолчанию.
Use master GO ALTER LOGIN [yourloginname] WITH DEFAULT_DATABASE = TempDB GO
Альтернативно после подключения измените имя базы данных по умолчанию на master via UI
Статья взята из : http://www.mytechmantra.com/LearnSQLServer/Fix-cannot-open-user-default-database-Login-failed-Login-failed-for-user-SQL-Server-Error/
Я, наконец, понял это, и моя ситуация отличается от всех других, о которых я читал сегодня вечером.
Я восстановил свою базу данных из резервной копии. Я знал, что существует определенный пользователь входа, который я использовал, поэтому я создал этого пользователя в SSMS. Однако в базе данных, которая вошла вместе с резервной копией, уже был пользователь с таким именем.
Поскольку я так много облажался, пытаясь исправить это, я не смог легко удалить пользователя под БД. Я удалил сообщение. база данных и восстановлена снова. Затем:
- удалить пользователя в разделе Базы данных - >[моя база данных] - >пользователи
- создайте пользователя снова в Security - >Logins (не под вашей БД, хотя это, вероятно, тоже работает.
- перейдите к вновь созданному пользователю. выбрать Properties. Затем в разделе сопоставления пользователей попросите его сделать вашу базу данных по умолчанию. Дайте ему доступ для чтения и записи.
Резюме: у меня было два пользователя. Тот, что пришел с БД, и тот, что я создал. Уберите ту, что пришла с помощью БД и создайте свою собственную.
Эта проблема проявилась для меня, когда я отключил свою БД по умолчанию. Следующее, что я помню, я не мог войти в систему. Переключение на вкладку Свойства соединения и выбор раскрывающегося списка для изменения базы данных, к которой я хочу подключиться, также не удалось.
Он сразу же впустил меня, как только я вручную набрал master в качестве базы данных, к которой я хотел подключиться (на вкладке свойства соединения).
У меня также была такая же проблема, оказалось, что я пытался получить доступ к встроенным классам членства (в представлении), и что .Net пытался создать базу данных в папке App_Data:
@Membership.GetUser().ProviderUserKey
Это приведет к тому, что система попытается создать базу данных на основе встроенной системы членства, что может быть не так, как настроена ваша система.
У меня была аналогичная проблема, пришлось просто скачать утилиту SQL Express, которая способна запускать пользовательские экземпляры. SSEUtil-это инструмент, написанный командой Visual Studio для устранения неполадок с экземплярами пользователей.Подробнее об этом можно прочитать в файле read me, установленном вместе с утилитой. http://www.microsoft.com/downloads/details.aspx?FamilyID=fa87e828-173f-472e-a85c-27ed01cf6b02&DisplayLang=en.
Надеюсь, это поможет.
В моем случае я должен был установить правильный путь "подключиться к любой базе данных":
На вашем экземпляре перейдите к
Security
, затем кLogins
.Щелкните правой кнопкой мыши там, вы увидите
properties
и вы должны нажать наSecurables
.Там это дает возможность подключиться к любой базе данных.