2010-02-19 107 views
1

我想迁移一个遗留的应用程序,我们必须到Windows Server 2008 x64和IIS7。它是用传统ASP编写的,并连接到SQL Server 2005数据库。“用户'NT AUTHORITY ANONYMOUS LOGON'登录失败。”到SQL Server 2005

但是,页面运行时,我收到错误:

[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.

我使用的连接字符串是:Driver=SQL Server; Server=SERVERNAME; Initial Catalog=DBNAME; 我看不到任何理由为它使用匿名的是登录为在我的32位Win2k3服务器上运行时,它使用DOMAINNAME \ SERVERNAME $访问SQL Server。

我有以下设置。

SQL Server 2005 - 以混合模式运行。 IIS7应用程序池 - 允许将32位应用程序设置为True。

我也将服务器添加为SQL Server上的用户。

我已经尝试了一些东西,现在我开始用尽想法。

回答

1

我想我已经修好了。移动到Win2k8意味着我需要将连接字符串驱动程序更改为SQL Native Client ;.

1

有一些解决方案。

使用SQL身份验证,而不是SSPI。它会工作,因为你的数据库处于混合模式。

如果因任何原因您不会更改身份验证。

顺便说一句,NT AUTHORITY\ANONYMOUS LOGON奇怪,就好像数据库服务器和应用程序服务器不在同一个域中一样。请检查此项,直到进一步增加。

1)在Active Directory中
2的用户)在IIS7和“身份”的权限和角色你想在DB你创建
3)授予该用户的用户创建一个应用程序池

+2

当a)调用代码在本地服务下运行时,我总是看到NT AUTHORITY \ ANONYMOUS LOGON,或者b)尝试模拟并遇到双跳问题时。 – 2010-02-19 14:59:49

0

那么,失败的登录尝试是在“本地服务”帐户下运行的代码的一个典型示例,而不是(您在Win2K3上的),它在“网络服务”帐户下运行。现在你只需要找到设置的位置。

0

对于无论是OP或未来的读者,您可以:

1)要么使用一个专门的服务帐户,由约翰上述建议,或

2)使用AppPoolIdentity帐户,并进入“认证“,然后选择”Windows身份验证“并启用”ASP .NET模拟“。

如果在#2后仍然得到相同的结果,您可能会遇到Damien引用的“双跳”问题 - 这是Web服务器可以对您进行身份验证的地方,但它不允许您将这些凭据传递给数据库出于安全原因而不使用Kerberos。然后,您需要在AD中将服务器设置为“可信委派”,并将Kerberos设置为IIS中的身份验证提供程序。此网站帮助:http://technet.microsoft.com/en-us/library/ee675779.aspx

+0

请解释“使用AppPoolIdentity帐户” – 2015-03-12 14:41:54

+0

“AppPoolIdentity”作为身份帐户内置于任何IIS 7应用程序池中。只要服务器可信任委派,它就可以与“通过身份验证”一起使用,以允许通过Windows身份验证自动进行模拟。您也可以使用自定义AD域帐户,但必须使用'setspn'为其设置SPN。 – vapcguy 2015-03-12 21:27:17

1

将匿名身份验证凭据设置为您的应用程序池标识。
(默认为特定用户 - > IIS用户)。然后,您可以在连接字符串中使用可信连接,因为它现在将使用AppPoolIdentity帐户。

相关问题