0

我正在使用会员类进行用户管理,它创建了一个名为 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'.

我不确定发生了什么事?

编辑:如果我不使用会员类,我可以很好地使用数据库..但是当我使用会员类登录后,它停止工作..

4

4 回答 4

1

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

于 2009-08-10T02:00:16.627 回答
0

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

于 2009-08-10T01:42:39.363 回答
0

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

Dim conn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("LocalSqlServer").ToString)
于 2009-08-10T02:05:48.850 回答
0

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

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

exec sp_grantlogin 'My-PC\MyUser2'

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

希望这可以帮助某人:)

于 2009-10-08T20:17:55.100 回答