Asp.net 用户登录失败';NT授权\网络服务';
我已经为此绞尽脑汁两天了,没有提出任何更接近解决方案。我已经读了20-30篇文章,但仍然无法解决这个问题 请帮帮我 我已禁用匿名身份验证,启用asp.net模拟 我添加了Asp.net 用户登录失败';NT授权\网络服务';,asp.net,sql-server-2008,iis-7,web-config,connection-string,Asp.net,Sql Server 2008,Iis 7,Web Config,Connection String,我已经为此绞尽脑汁两天了,没有提出任何更接近解决方案。我已经读了20-30篇文章,但仍然无法解决这个问题 请帮帮我 我已禁用匿名身份验证,启用asp.net模拟 我添加了 我已将a用户添加到连接到我尝试连接到的数据库的安全登录中 这是我使用的连接字符串: Data Source=IPTOSERVER;Initial Catalog=Phaeton;User Id=User;Password=Password; 错误消息: 无法打开登录请求的数据库“Phaeton.mdf”。登录失败 用户“NT
我已将a用户添加到连接到我尝试连接到的数据库的安全登录中
这是我使用的连接字符串:
Data Source=IPTOSERVER;Initial Catalog=Phaeton;User Id=User;Password=Password;
错误消息:
无法打开登录请求的数据库“Phaeton.mdf”。登录失败
用户“NT授权\网络服务”登录失败
所需的SQL Server登录名为
DOMAIN\machinename$
。这是调用的NT AUTHORITY\NETWORK服务对SQL Server(和文件服务器等)的显示方式
在SQL中
CREATE LOGIN [XYZ\Gandalf$] FROM WINDOWS
您说过在使用SQL Express edition时它工作正常。默认情况下,express Edition创建命名实例并在NT Authority\Network服务中运行
默认情况下,SQL Server STD安装默认实例并在NT Authority\SYSTEM中运行
您是否在同一台计算机上安装了完整的SQL edition和Express edition
可能是在某个地方,连接字符串仍然引用命名实例“SQLEXPRESS”,而不是完整版本创建的默认实例
连接字符串在哪里定义?在IIS中还是在您的代码中?确保如果在多个地方定义,所有都指向相同的SQL实例和数据库
另外,请尝试查看SQL Server错误日志中存在的详细错误。由于安全原因,事件日志中记录的错误不完整。这还将帮助您了解是否连接到了正确的SQL Server
还要确保安装SQL的计算机是可访问的&IIS正在尝试访问同一台计算机。在我的公司,有时由于名称解析错误,查询会失败,因为我们的大多数计算机都安装了SQL&查询登录到错误的SQL Server
确保SQL Server中存在该数据库。SQL Management Studio中数据库下显示的名称应与连接字符串中的名称匹配
您收到的错误消息告诉您,应用程序未能连接到sqlexpress数据库,而不是sql server。
我将只更改sql server中db的名称,然后相应地更新connectionstring并重试
您的错误消息声明如下:
Cannot open database "Phaeton.mdf" requested by the login. The login failed.
在我看来,您仍在尝试连接到基于文件的数据库,名称“Phaeton.mdf”与新的sql数据库名称“Phaeton”不匹配
希望这能有所帮助。我在Windows事件查看器中发现了一条类似的错误消息,内容如下:
用户“NT授权\网络服务”登录失败。原因:无法打开显式指定的数据库。[客户端:本地计算机]
解决我问题的解决方案是:
通过SQL Server Management Studio登录到SqlExpress
转到数据库的“安全”目录
右键单击用户目录
选择“新用户…”
将“NT授权\网络服务”添加为新用户
在数据角色成员资格区域中,选择db_owner
单击“确定”
以下是上述内容的屏幕截图:
我喜欢Jed的解决方案,但问题是每次我在调试模式下构建项目时,它都会部署数据库项目并再次删除用户。所以我将这个MySQL脚本添加到部署后脚本中。
它实际上做到了Jed所说的,但每次我部署时都会创建用户
CREATE USER [NT AUTHORITY\NETWORK SERVICE]
FOR LOGIN [NT AUTHORITY\NETWORK SERVICE]
WITH DEFAULT_SCHEMA = dbo;
Go
EXEC sp_addrolemember 'db_owner', 'NT AUTHORITY\NETWORK SERVICE'
如果错误消息只是
用户“NT授权\网络服务”登录失败,然后授予
“NT授权\网络服务”的登录权限
利用
"sp_grantlogin 'NT AUTHORITY\NETWORK SERVICE'"
否则,如果错误消息如下所示
“无法打开登录请求的数据库”Phaeton.mdf“
失败。用户“NT授权\网络服务”登录失败。“
试用
"EXEC sp_grantdbaccess 'NT AUTHORITY\NETWORK SERVICE'"
在“Phaeton”数据库下。最好的方法是为应用程序创建一个用户,并分配适合该用户的权限。不要将“NT AUTHORITY\NETWORK SERVICE”用作您的用户它有自己的漏洞,并且它是一个在操作系统级别上拥有很多权限的用户。远离此内置用户。我正在使用Entity Framework重新填充数据库,每次生成数据库时,用户都会被覆盖
现在,每次加载新的DBContext时,我都会运行此命令:
cnt.Database.ExecuteSqlCommand("EXEC sp_addrolemember 'db_owner', 'NT AUTHORITY\\NETWORK SERVICE'");
确保已创建数据库。当我将迁移应用到解决方案中的错误项目时,我遇到了相同的错误。当我将迁移应用到正确的项目时,它创建了数据库并解决了错误。您能更具体地说明我需要做什么吗?因为这对我来说没有任何意义(它真的没有:)我只在这台服务器计算机上安装了sql server。我只在Web.Config文件中创建了connectionstring。我现在将尝试查看日志文件,看看是否有更具体的错误。数据库已连接到sql server,我创建了一个假定使用它的用户。不知怎的,它一直在进行NT认证。。当我想使用sql authlife saver时,非常感谢。我完全没有想到我尝试使用的数据库是sqlexpress。我首先投票,事实上这个想法最终对我有效。谢谢,但用户名并不重要,它是您为它选择的登录名,应该是NT AUTHORITY\NETWORK SERVICE。还有一件事是,我的SQL Server Express(2005)不允许在用户名中使用\char(我不确定整个SQL是否允许)。再次感谢!哦,太棒了!我真不敢相信这会奏效。向上投票,如果我有足够的分数,我会给你答案打勾。我知道这个问题已经问了差不多四年了,但我真的很感激你