ASP.NET ASPNETDB.MDF无法打开数据库

时间:2009-08-10 01:40:00

标签: asp.net sql-server web-config sqlconnection

我正在为我的用户管理使用成员资格类,它创建了一个名为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)

在我通过Membership类登录后,它给了我这个错误:

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

我不确定发生了什么事?

编辑:如果我不使用Membership类,我可以正常使用数据库..但是当我使用成员类登录后,它停止工作..

4 个答案:

答案 0 :(得分:1)

确保My-Pc \ MyUser可以访问“MyProject”数据库的相应权限。对于我的本地项目运行的测试环境,我通常将自己指定为我想要访问的数据库的数据库所有者。那就是我是唯一访问它的用户。你可以通过运行EXEC sp_changedbowner'My-Pc \ MyUser'来实现。显然,您希望为生产环境专门设置一个访问受限的单独帐户。

答案 1 :(得分:0)

您可能需要确保Web服务器正在运行的用户具有对db文件和目录的读/写访问权限。

答案 2 :(得分:0)

尝试从web.config中删除“connString”并改为使用“LocalSqlServer”连接字符串(它在machine.config中定义):

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

答案 3 :(得分:0)

我也遇到过这个问题,我注意到如果我将数据库的所有者更改为'My-Pc \ MyUser'确实有效(通过 EXEC sp_changedbowner'My-Pc \ MyUser')如上所述。

您也可以尝试在数据库上运行它:

exec sp_grantlogin 'My-PC\MyUser2'

如果您希望MyUser和MyUser2可以访问您的数据库,这当然很有用。当我必须使用MyUser2凭据执行 aspnet_regsql.exe 时,我遇到了这种情况(因为我的数据库的所有者是ASPNET,它没有登录/ runas功能)。

希望这有助于某人:)