我有一个经典的ASP应用程序,我试图连接到不同服务器上的SQL Server 2008数据库。 ASP应用程序是从Windows Server 2008上的IIS7提供的。
我已将网站的应用程序池更改为在特定的Windows帐户下运行, 我已验证可以访问远程服务器上的数据库。
但是,当我在浏览器中运行应用程序时,出现此错误:
Application Error Number: -2147217843 (0x80040E4D) Source: Microsoft OLE DB Provider for SQL Server Description: Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
为什么尝试使用NT AUTHORITY \ ANONYMOUS LOGON进行连接? 应用程序池标识不适用于传统ASP代码吗? 如何以特定用户身份进行连接?
这是我正在使用的连接字符串:
Provider = SQLOLEDB.1; Data Source = myDbServer; Initial Catalog = myDatabase; Integrated Security = SSPI
答案 0 :(得分:21)
对于使用经典ASP的应用程序池标识的站点,您需要更改用于匿名身份验证的凭据。默认情况下,该站点将设置为使用特定用户,即IUSR。
从您网站的IIS区域中选择身份验证,然后选择匿名身份验证,然后选择修改。从特定用户更改为应用程序池标识。
建议使用Windows身份验证(集成安全性)而不是SQL身份验证,这样您的配置文件中就没有凭据,这样如果这些文件被泄露,您就不会失去对凭据的控制权。
答案 1 :(得分:0)
您的应用是否会冒充问者?您需要启用约束委派:Configuring Servers for Delegation。
答案 2 :(得分:-1)
您应该为连接字符串www.connectionstrings.com指定用户名和密码,或者将IIS应用程序设置为以特定用户身份运行,但这会使IIS中的许多安全设置过时。
Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase;Uid=myUsername; Pwd=myPassword;
看看这里:aspfaq
最后,请确保在IIS网站上禁用匿名访问,以便它实际模拟您选择的用户,而不是通过匿名令牌。