【发布时间】:2020-11-05 02:09:43
【问题描述】:
我正在尝试帮助客户为旧的经典 ASP 应用程序设置环境,我们在连接到 SQL Server 数据库时遇到了这个问题。
我们得到的错误是“用户 'WORKGROUP\LocalComputerName$' 登录失败。”
这是不言自明的。 我认为它可能与 IIS 中的应用程序池使用的身份有关,但在将其更改为特定用户后,我一直收到完全相同的错误。然后我找到了这篇文章:Login failed for user 'DOMAIN\MACHINENAME$'
所以,似乎正在发生的事情是连接假设 SQL Server 是远程计算机,因此它试图使用计算机名称而不是当前用户进行身份验证。
现在是棘手的部分:
- 环境不在域中,因此无法将计算机添加到 SQL Server 中的用户
- 我无权访问连接到数据库的实际逻辑,我只知道它使用特定的系统 DSN 来执行此操作。
- 我根本无法将参数传递给连接。我需要通过 DSN 使其工作。
我可以以任何我想要的方式修改 DSN,但也可以修改 IIS 和 SQL Server。
关于如何设置不需要通过代码传递密码/用户名并且可以使用本地用户而不是计算机名连接到 SQL Server 的 DSN。
谢谢。
【问题讨论】:
-
这能回答你的问题吗? What is a Trusted Connection?
-
@Lankymart,不,我在 DSN 中使用受信任的连接,当我测试它时它可以正常工作。问题是当 IIS 使用它时,它会将计算机名称作为凭据而不是用户凭据传递。计算机需要独立获得权限。
-
您要么传递凭据,要么不传递凭据,如果您希望使用 Windows 身份验证来传递凭据,那么您正在尝试使用受信任的连接。
-
@willvv 尝试将应用程序池身份用户添加到 SQL 服务器和访问 db 的大权限。 forums.iis.net/post/2159167.aspx
-
网站的安全性如何?您需要在 IIS 中打开 Windows 身份验证并关闭匿名,才能通过当前的 Windows 用户。
标签: sql-server iis asp-classic dsn