我有一个经典的 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
最佳答案
对于要使用经典 ASP 的应用程序池标识的站点,您需要更改用于匿名身份验证的凭据。默认情况下,该站点将设置为使用特定用户,即 IUSR。
从站点的 IIS 区域中选择身份验证,然后选择匿名身份验证,然后选择编辑。从特定用户更改为应用程序池身份。
建议使用 Windows 身份验证(集成安全性)而不是 SQL 身份验证,这样您的配置文件中就不会包含凭据,这样即使这些文件遭到泄露,您也不会失去对凭据的控制。
关于sql-server - 连接到远程 SQL Server 数据库的经典 ASP 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1139772/