【问题标题】:Windows10 SQL Server 2017 Classic ASP connection - SSL Security ErrorWindows10 SQL Server 2017 经典 ASP 连接 - SSL 安全错误
【发布时间】:2020-05-06 17:46:06
【问题描述】:

我正在构建一台装有 Windows10 和 SQL Server 2017 的新机器,我很难让我的旧 ASP 应用程序正确连接。

连接字符串如下所示:

"driver={SQL Server};uid=USERNAME;pwd=PASSWORD;server=LocalServer;Database=LocalDB;"

我可以使用这样的连接字符串进行连接:

"Provider=SQLNCLI11;Server=LocalServer;Database=LocalDB;Integrated Security=SSPI;DataTypeCompatibility=80;MARS Connection=True;"

...但这会导致现有代码的方式及其与存储过程的交互方式出现一堆错误,因此我试图让第一个连接字符串正常工作。

我用那个字符串得到的错误是这样的:

用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序错误“80004005”

[Microsoft][ODBC SQL Server 驱动程序][共享内存]SSL 安全错误

/Codeshare/ServerSide/conx_current.asp,第 8 行

该代码如下所示:

dim sqlconn
set sqlconn = server.CreateObject("ADODB.CONNECTION")
dim cn : cn = getConx("current")
sqlconn.open cn

... 其中 getConx("current") 只是从上面返回连接字符串

如果有帮助,如果我尝试使用 SQL Server 或 SQL Server Native Client 11.0 驱动程序创建 ODBC 连接,我会收到相同的错误消息。

TIA

【问题讨论】:

  • 试用新的 MSOLEDBSQL 驱动程序。见docs.microsoft.com/en-us/sql/ado/guide/appendixes/…
  • 对我来说,问题似乎出在数据库安全性上——新的连接字符串意味着当前的 Windows 帐户用于对数据库进行身份验证,如果它没有映射到数据库中进行访问,那么你会出错。 support.microsoft.com/de-de/help/306586/…
  • 您可以通过 TCP/IP 连接到 SQL Server 还是共享内存是唯一的选择? TCP/IP 通常被禁用,除非您选择启用它

标签: sql-server asp-classic


【解决方案1】:

听起来 SQL Sever 已经过强化,只允许使用更安全的协议,如 TLS 1.2 和相关的强密码。问题是较旧的提供商不支持这些更新的协议。 SQLNCLI11 确实如此,但正如您所发现的那样,ADO 的行为方式有所不同,从而破坏了 ASP 站点。

在大多数情况下,我发现将SET NOCOUNT ON 添加到 SP 和 SQL 批处理的顶部可以恢复 90% 的功能。然后是寻找其他问题的案例。

另一种方法是通过重新启用 SSL3 等旧协议并重新启用最不安全的密码来回退服务器加固

搜索“TLS 1.2 和 SQLNCLI11”

【讨论】:

  • 很高兴在很长一段时间后看到您的答复。错过了您和您的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多