Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 用户登录失败';NT授权\网络服务';_Asp.net_Sql Server 2008_Iis 7_Web Config_Connection String - Fatal编程技术网

Asp.net 用户登录失败';NT授权\网络服务';

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

我已经为此绞尽脑汁两天了,没有提出任何更接近解决方案。我已经读了20-30篇文章,但仍然无法解决这个问题

请帮帮我

我已禁用匿名身份验证,启用asp.net模拟

我添加了

我已将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是否允许)。再次感谢!哦,太棒了!我真不敢相信这会奏效。向上投票,如果我有足够的分数,我会给你答案打勾。我知道这个问题已经问了差不多四年了,但我真的很感激你