ASP.NET ASPNETDB.MDF Не удается открыть базу данных - PullRequest
0 голосов
/ 10 августа 2009

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

Когда я пытаюсь получить к нему доступ:

    <connectionStrings>
    <add name="connString" connectionString="Initial Catalog=MyProject;Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\MyName\Documents\Visual Studio 2008\Projects\Project\MyProject\App_Data\ASPNETDB.MDF;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />
</connectionStrings>

Используя это:

Dim conn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("connString").ToString)

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

    Cannot open database "MyProject" requested by the login. The login failed.
Login failed for user 'My-PC\Myuser'.

Я не уверен, что происходит?

Редактировать: Если я не использую класс Membership, я могу нормально использовать базу данных ... но когда после того, как я войду в систему с использованием класса членства, он перестанет работать ..

Ответы [ 4 ]

1 голос
/ 10 августа 2009

Убедитесь, что My-Pc \ MyUser имеет соответствующие права доступа к базе данных «MyProject». Для тестовой среды, в которой работают мои локальные проекты, я обычно назначаю себя владельцем базы данных для базы данных, к которой я хочу получить доступ. То есть, если я единственный пользователь, имеющий к нему доступ. Вы можете сделать это, запустив EXEC sp_changedbowner 'My-Pc \ MyUser'. Очевидно, что вы хотите выделить отдельную учетную запись с ограниченным доступом для вашей производственной среды.

0 голосов
/ 09 октября 2009

Я также столкнулся с этой проблемой и заметил, что она действительно работает, если я изменил владельца базы данных на «My-Pc \ MyUser» (через EXEC sp_changedbowner 'My-Pc \ MyUser' ), как указано выше.

Вы также можете попробовать запустить это в своей базе данных:

exec sp_grantlogin 'My-PC\MyUser2'

Это, безусловно, полезно, если вы хотите, чтобы MyUser AND MyUser2 имели доступ к вашей базе данных. Я столкнулся с этим сценарием, когда мне пришлось выполнить aspnet_regsql.exe с использованием учетных данных MyUser2 (поскольку владельцем моей базы данных является ASPNET, который НЕ имеет возможностей входа в систему / запуска).

Надеюсь, это кому-нибудь поможет:)

0 голосов
/ 10 августа 2009

Попробуйте удалить «connString» из web.config и использовать вместо этого строку подключения «LocalSqlServer» (это определено в machine.config):

Dim conn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("LocalSqlServer").ToString)
0 голосов
/ 10 августа 2009

Возможно, вам потребуется убедиться, что пользователь, на котором работает веб-сервер, имеет доступ на чтение и запись к файлу и каталогу db.

...