无法打开登录请求的数据库"test".登录失败.用户'xyz\ASPNET'登录失败

cou*_*011 82 c# sql-server asp.net iis web-services

我创建了一个将一些数据保存到db的Web服务.但是我收到了这个错误:

无法打开登录请求的数据库"test".登录失败.用户'xyz\ASPNET'登录失败.

我的连接字符串是

Data Source=.\SQLExpress;Initial Catalog=IFItest;Integrated Security=True
Run Code Online (Sandbox Code Playgroud)

mar*_*c_s 45

嗯,错误很清楚,不是吗?您正在尝试使用用户"xyz/ASPNET"连接到您的SQL Server - 这是您的ASP.NET应用程序运行的帐户.

此帐户不允许连接到SQL Server - 在该帐户的SQL Server上创建登录,或者在连接字符串中指定另一个有效的SQL Server帐户.

你能告诉我们你的连接字符串(通过更新原始问题)吗?

更新:好的,您正在使用集成的Windows身份验证 - >您需要在SQL Server上为"xyz\ASPNET"创建SQL Server登录 - 或者将您的连接字符串更改为:

connectionString="Server=.\SQLExpress;Database=IFItest;User ID=xyz;pwd=top$secret"
Run Code Online (Sandbox Code Playgroud)

如果您的数据库中有一个用户名为"xyz",密码为"top $ secret".

  • 不是"不允许连接到SQL Server",但"不允许使用数据库"test"". (11认同)
  • @DarrellLloydHarvey 当有人(就像在这个答案中)指出“错误非常清楚”时总是很有趣,而实际上,经常有很多边缘情况,其中错误消息恰好具有误导性。 (4认同)
  • 您从未触及的一点是 DB 名称也可能是错误的。我从我的 Azure SQL Server 中抛出了一条类似的异常消息,结果我在我的 ASP.NET 项目的 C# 代码中的一个连接字符串中为我的数据库指定了错误的名称。 (3认同)
  • 罗恩,那是我的问题。我什至仔细检查过拼写,但还是错过了。 (2认同)

gbn*_*gbn 25

  • 要么:"xyz\ASPNET"不是登录(在sys.server_principals中)
  • 或者:"xyz\ASPNET"已设置但未映射到数据库测试中的用户(sys.database_principals)

我会选择第二个选项:错误消息暗示默认数据库不存在或没有权限,而不是设置为登录.

测试它是否设置为登录

SELECT SUSER_ID('xyz\ASPNET') -- (**not** SUSER_SID)
Run Code Online (Sandbox Code Playgroud)

如果为NULL

CREATE LOGIN [xyz\ASPNET] FROM WINDOWS
Run Code Online (Sandbox Code Playgroud)

如果不是NULL

USE test
GO
SELECT USER_ID('xyz\ASPNET')
Run Code Online (Sandbox Code Playgroud)

如果为NULL

USE test
GO
CREATE USER [xyz\ASPNET] FROM LOGIN [xyz\ASPNET]
Run Code Online (Sandbox Code Playgroud)

  • 这太棒了!这是一个检测和解决问题的简单工作流程。 (2认同)
  • “SELECT USER_ID(...”运行针对哪个表?主控? (2认同)

cyp*_*tus 10

对我来说,数据库没有创建,EF 代码应该首先创建它,但总是在这个错误中结束。相同的连接字符串在 aspnet 核心默认 Web 项目中工作。解决方案是添加

_dbContext.Database.EnsureCreated()
Run Code Online (Sandbox Code Playgroud)

在第一次数据库接触之前(在数据库播种之前)。


小智 8

登录问题的最佳解决方案是在sqlServer中创建登录用户.以下是创建使用Windows身份验证(SQL Server Management Studio)的SQL Server登录的步骤:

  1. 在SQL Server Management Studio中,打开对象资源管理器,然后展开要在其中创建新登录名的服务器实例的文件夹.
  2. 右键单击"安全性"文件夹,指向"新建",然后单击"登录".
  3. 在"常规"页面上,在"登录名"框中输入Windows用户的名称.
  4. 选择Windows身份验证.
  5. 单击确定.

例如,如果用户名是xyz\ASPNET,则在登录名框中输入此名称.

您还需要更改用户映射以允许访问要访问的数据库.


Par*_*Par 8

我有这个问题,为我解决的问题是:

  • 转到IIS中的应用程序池
  • 右键单击我的项目应用程序池
  • 在Process Model部分中打开Identity
  • 选择自定义帐户选项
  • 输入您的PC用户名和密码.


Jus*_* O. 7

大多数情况下,这不是登录问题,而是创建数据库本身的问题.因此,如果创建数据库时出错,则不会首先创建它.在这种情况下,如果您尝试登录,则无论用户如何,登录都将失败.这通常是由于db上下文的逻辑错误解释而发生的.

在浏览器中访问该站点并真正阅读这些错误日志,这可以帮助您发现代码的问题(通常与模型的逻辑问题相冲突).

在我的情况下,代码编译好,相同的登录问题,而我还在下载管理工作室,我通过错误日志,修复了我的数据库上下文约束和网站开始运行良好....同时管理工作室仍在下载


小智 6

这对我有用。

\n\n
    \n
  1. 转到 SQL Server >> 安全 >> 登录并右键单击 NT AUTHORITY\\NETWORK SERVICE 并选择属性
  2. \n
  3. 在新打开的“登录属性”屏幕中,转到 \xe2\x80\x9cUser Mapping\xe2\x80\x9d 选项卡。
  4. \n
  5. 然后,在 \xe2\x80\x9cUser Mapping\xe2\x80\x9d 选项卡上,选择所需的数据库 \xe2\x80\x93,尤其是显示此错误消息的数据库。
  6. \n
  7. 单击“确定”。
  8. \n
\n\n

阅读此博客。

\n\n

http://blog.sqlauthority.com/2009/08/20/sql-server-fix-error-cannot-open-database-requested-by-the-login-the-login-failed-login-failed-for-用户 nt 权限网络服务/

\n


Gre*_*olf 6

当您输入错误的数据库名称时也会发生这种情况

ex : xxx-db-dev to xxx-dev-db
Run Code Online (Sandbox Code Playgroud)

有时,这只是一个愚蠢的错误。我花了大约 1 个多小时才找到这个:(因为我只是先尝试​​了很多困难的事情


Ant*_*hin 5

问题

该错误显示为类似于以下内容的消息:

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

  • 该错误通常无法通过简单的 Visual Studio 或整个计算机重新启动来纠正。
  • 该错误也可以作为一个看似锁定的数据库文件找到。

修复

解决方案分为以下步骤。您不会丢失数据库中的任何数据,也不应删除数据库文件!

先决条件:您必须已安装 SQL Server Management Studio(完整版或快速版)

  1. 打开 SQL Server 管理工作室
  2. 在“连接到服务器”窗口(文件->连接对象资源管理器)中输入以下内容:
    • 服务器类型:数据库引擎
    • 服务器名称:(localdb)\v11.0
    • 身份验证:[无论您在创建本地数据库时使用什么。可能是 Windows 身份验证)。
  3. 点击“连接”
  4. 展开对象资源管理器中的“数据库”文件夹(视图-> 对象资源管理器,F8)
  5. 找到你的数据库。它应该被命名为您的数据库 (.mdf) 文件的完整路径
    • 您应该会看到它在数据库名称的末尾显示“(Pending Recovery)”,或者当您尝试扩展数据库时,它将无法并且可能会或可能不会向您提供错误消息。
    • 这个问题!您的数据库基本上崩溃了..
  6. 右键单击数据库,然后选择“任务-> 分离...”。
  7. 在分离窗口中,在列表中选择您的数据库并检查显示“Drop Connections”的列
  8. 单击确定。
  9. 您应该会看到该数据库从数据库列表中消失了。您的问题现在应该已解决。运行并运行使用 localdb 的应用程序。
  10. 运行您的应用程序后,您的数据库将重新出现在数据库列表中 - 这是正确的。它不应该再说“待恢复”,因为它应该可以正常工作。

解决方案来源: https : //www.codeproject.com/Tips/775607/How-to-fix-LocalDB-Requested-Login-failed