Sql server SQL Server 2000+;ASP.NET:用户登录失败';NT授权\匿名登录';

Sql server SQL Server 2000+;ASP.NET:用户登录失败';NT授权\匿名登录';,sql-server,security,iis,Sql Server,Security,Iis,我刚移植了一个开发工作站 发件人:带IIS 6的Windows XP Pro SP3 至:Vista Enterprise 64位带IIS 7 自移动后,我的一个访问SQL Server 2000数据库的页面从我的ASP.NET 2.0网页接收到以下错误:“用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败。” 我有: 在IIS和web.config中启用Windows身份验证 在IIS中禁用匿名身份验证 将模拟设置为以经过身份验证的用户身份运行 已验证登录用户(在本

我刚移植了一个开发工作站

  • 发件人:带IIS 6的Windows XP Pro SP3
  • 至:Vista Enterprise 64位带IIS 7
自移动后,我的一个访问SQL Server 2000数据库的页面从我的ASP.NET 2.0网页接收到以下错误:“用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败。”

我有:

  • 在IIS和web.config中启用Windows身份验证
  • 在IIS中禁用匿名身份验证
  • 将模拟设置为以经过身份验证的用户身份运行
  • 已验证登录用户(在本例中为me)是否有权访问SQL Server上的相应数据库
  • 通过检查User.Identity.Name和System.Security.Principal.WindowsIdentity.GetCurrent().Name(两者都显示我的用户名),验证我在ASP.NET页面中的登录和模拟信息是否正确
我使用SqlConnection的连接字符串是“Server={Server\u NAME};Database={DB\u NAME};integratedsecurity=SSPI;Trusted\u connection=True;”

为什么尝试使用NT授权\匿名登录登录?我必须假设它是IIS7特定的某个设置或web.config条目,因为它在迁移之前工作正常


注意:SQL Server仅适用于Windows身份验证-无混合模式或仅适用于SQL。

假设SQL Server安装在单独的框中,并且位于域中


您的工作站需要启用Active Directory中的委派才能通过凭据(“登录令牌”)并允许模拟工作。根据其他步骤,这似乎是您正在尝试执行的操作,

您需要在active directory中设置SPN。假设您在中间服务器上的域服务帐户下运行SQL server,则需要在域控制器上运行此链接:

setspn -A MSSQLSvc/SERVERNAME.domain.name:1433 domainname\SQLServiceAccount
将SERVERNAME切换为中间服务器名称(代表您访问SQL 2000框的名称),确保使用完全限定的域名(即Myserver.mycompany.local),然后使用domainname\SQLServerAccount帐户运行SQL服务(即代表您访问SQL 2000框的帐户)

如果您想了解更多详细信息,这里有一篇关于它的MSDN文章-。如果遇到任何问题,请发回。

在SSMS中运行


EXEC master..sp_addsrvrolemember@loginame=N'NT SERVICE\MSSQLSERVER',@rolename=N'sysadmin'

SQL是否安装在不同的框中?