无法打开登录请求的数据库“ASPNETDB”。登录失败。用户 'Philip-Desktop\Philip' 登录失败

Posted

技术标签:

【中文标题】无法打开登录请求的数据库“ASPNETDB”。登录失败。用户 \'Philip-Desktop\\Philip\' 登录失败【英文标题】:Cannot open database "ASPNETDB" requested by the login. The login failed. Login failed for user 'Philip-Desktop\Philip'无法打开登录请求的数据库“ASPNETDB”。登录失败。用户 'Philip-Desktop\Philip' 登录失败 【发布时间】:2011-06-20 10:55:30 【问题描述】:

几个小时以来,我一直在努力寻找这个问题的答案......

我以前在访问 ASPNETDB 数据库时不会出现此错误,但不幸的是我不知道我更改了什么。当我尝试访问名为 Admin.aspx 的文件时出现错误,该文件位于名为 Admin 的文件夹中。我使用网站管理工具对此文件夹设置了限制,但是当出现错误时,我将它们全部关闭以查看问题所在,但我仍然得到错误? Admin.aspx 文件是唯一出现错误的文件。

我在 web.config 中的连接字符串是:

<add name="WIJLConnectionString1" connectionString="Data Source=localhost;Integrated Security=SSPI; Initial Catalog=ASPNETDB" providerName="System.Data.SqlClient" />

这是错误:

异常详情: System.Data.SqlClient.SqlException: 无法打开数据库“ASPNETDB” 登录请求。登录 失败的。用户登录失败 '菲利普桌面\菲利普'。

[SqlException (0x80131904): 不能 打开由请求的数据库“ASPNETDB” 登录。登录失败。登录 用户失败 '菲利普桌面\菲利普'。] System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,布尔型 breakConnection) +5009598 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +234 System.Data.SqlClient.TdsParser.Run(运行行为 runBehavior,SqlCommand cmdHandler, SqlDataReader 数据流, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2275 System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(布尔值 征募OK)+35 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo,字符串 newPassword, 布尔忽略SniOpenTimeout, TimeoutTimer 超时,SqlConnection 拥有对象)+183 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo,字符串 newPassword, 布尔重定向用户实例, SqlConnection 拥有对象, SqlConnectionString 连接选项, TimeoutTimer 超时)+239 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject,TimeoutTimer 超时, SqlConnectionString 连接选项, 字符串 newPassword,布尔值 重定向用户实例)+195 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity 身份,SqlConnectionString 连接选项,对象 providerInfo,字符串 newPassword, SqlConnection owningObject,布尔值 重定向用户实例)+232 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions 选项,对象 poolGroupProviderInfo, DbConnectionPool 池,DbConnection 拥有连接)+185 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection 拥有连接,DbConnectionPool 池,DbConnectionOptions 选项)+33 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection 拥有对象)+524 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection 拥有对象)+66 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection 拥有对象)+479 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection 拥有连接)+108 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection 外部连接,数据库连接工厂 连接工厂)+126 System.Data.SqlClient.SqlConnection.Open() +125 System.Data.Common.DbDataAdapter.FillInternal(数据集 数据集,DataTable[] 数据表,Int32 startRecord,Int32 maxRecords,字符串 srcTable,IDbCommand 命令, 命令行为行为)+123 System.Data.Common.DbDataAdapter.Fill(数据集 数据集,Int32 开始记录,Int32 maxRecords,字符串 srcTable, IDbCommand 命令,CommandBehavior 行为)+319 System.Data.Common.DbDataAdapter.Fill(数据集 数据集,字符串 srcTable) +92 System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments 论据)+1618 System.Web.UI.DataSourceView.Select(DataSourceSelectArguments 论据, DataSourceViewSelectCallback 回调) +21 System.Web.UI.WebControls.DataBoundControl.PerformSelect() +143 System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +74 System.Web.UI.WebControls.GridView.DataBind() +4 System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +66 System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() +75 系统.Web.UI.Control.EnsureChildControls() +102 System.Web.UI.Control.PreRenderRecursiveInternal() +42 System.Web.UI.Control.PreRenderRecursiveInternal() +175 System.Web.UI.Control.PreRenderRecursiveInternal() +175 System.Web.UI.Page.ProcessRequestMain(布尔 includeStagesBeforeAsyncPoint,布尔值 includeStagesAfterAsyncPoint) +2496

请大家帮忙!!我现在很绝望

【问题讨论】:

【参考方案1】:

错误信息尽可能清晰:

无法打开数据库“ASPNETDB” 登录请求。登录 失败的。 用户登录失败 '菲利普桌面\菲利普'

不允许该 Windows 用户连接到该数据库并使用它。

检查以确保:

您的连接字符串中有正确的服务器名称。真的是localhost吗?或者您是否安装了 SQL Server Express,结果却改为 (local)\SQLExpress

您要连接的服务器拥有Philip-Desktop\Philip的登录名(签入Object Explorer -&gt; (your server) -&gt; Security -&gt; Logins

数据库 ASPNETDB 有一个基于该登录名的用户,以便您可以使用该数据库(签入Object Explorer -&gt; (your server) -&gt; Databases -&gt; (your database) -&gt; Security -&gt; Users

您的 admin.aspx 页面真正引用了您提供的连接字符串 (WIJLConnectionString1)。您的Admin 文件夹中是否有单独的web.config,例如有不同的连接字符串,而admin.aspx 页面则引用了该连接字符串??

【讨论】:

@Philip906: localhost, (local). 应该都是等价的;问题是:您的 SQL Server 是作为主/默认实例安装的,没有单独的实例名称,还是您安装了例如Express,默认为SQLExpress 实例名称(您需要将其添加到您的服务器名称,以连接到它)【参考方案2】:

感谢您的回复,我知道出了什么问题。

显然,我在 Admin.aspx 中的所有 SqlDataSource 连接字符串已从使用指向正确数据库 (WIJL) 的连接字符串更改为指向 ASPNETDB 数据库的连接字符串 WIJLConnectionString1。我所要做的就是将连接字符串改回来

【讨论】:

你在使用实体框架吗?在某些情况下,运行模型创建向导可能会导致此问题。

以上是关于无法打开登录请求的数据库“ASPNETDB”。登录失败。用户 'Philip-Desktop\Philip' 登录失败的主要内容,如果未能解决你的问题,请参考以下文章

实体框架无法打开登录请求的数据库 - 用户登录失败

无法打开登录所请求的数据库

无法打开登录请求的数据库“”。登录失败。用户“sa”登录失败

无法打开登录请求的数据库“AppFabricMonitoringDB”

无法打开登录请求的数据库“ABC”。登录失败

无法打开登录请求的数据库 MyDB。登录失败。用户“myUser”的登录失败