我正在为我的用户管理使用成员资格类,它创建了一个名为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类,我可以正常使用数据库..但是当我使用成员类登录后,它停止工作..
答案 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功能)。
希望这有助于某人:)