连接到远程SQL Server数据库的经典ASP问题

时间:2009-07-16 19:28:41

标签: sql-server web-applications iis-7 asp-classic database-connection

我有一个经典的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

3 个答案:

答案 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网站上禁用匿名访问,以便它实际模拟您选择的用户,而不是通过匿名令牌。