【问题标题】:Connect to local SQL Server from classic ASP using DSN and Windows authentication使用 DSN 和 Windows 身份验证从经典 ASP 连接到本地 SQL Server
【发布时间】: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


【解决方案1】:

毫无疑问,您将创建一个经过身份验证的用户来读取/写入数据库以支持您的 DSN 连接,顺便说一下,当使用“SQL Server 身份验证”而不是“Windows 身份验证”时,这可能更可靠。

但如果站点设置为允许 32 位应用程序,请确保使用 32 位 DSN 连接。

如果使用默认设置且站点仅为 64 位,则务必使用 64 位 DSN 连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多