2010-02-19 141 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帳戶。

相關問題