【问题标题】:IIS 10 / SQL Server 2017 / very slow connections with classic ASPIIS 10 / SQL Server 2017 / 与经典 ASP 的连接速度非常慢
【发布时间】:2019-02-21 04:10:52
【问题描述】:

我已经运行经典的 ASP / SQL Server 2008 R2 / Windows Server 2012 R2 / IIS 8 大约 10-15 年;没问题。但我试图让这些相同的脚本在装有 Windows Server 2016 (IIS 10) 和 SQL Server 2017 的新机器上运行,并且在连接数据库时遇到问题。 (并且暂时无法在 ASP.NET 中重写它们)。

例如,我将创建一个到数据库的连接:

set conn = server.CreateObject("ADODB.Connection")  
conn.ConnectionTimeout=120  
conn.Open("Provider=sqloledb;Data Source=(local);Initial Catalog=myDatabase;Integrated Security=SSPI")

第一个问题,创建连接需要两秒钟(每个连接正好两秒钟)。即使连接应该保持打开状态,该页面或另一个页面上的后续连接(相同的数据库;相同的连接字符串)也需要两秒钟(即使我已将 ConnectionTimeout 设置为 120 秒)。

第二个问题(更严重),然后需要两秒钟(几乎正好两秒钟)对该连接执行任何操作,即使它只是一行,例如:

sql = "update myTable set zipCode = 91839 where ID = 12345"  
conn.execute(sql)

然后,如果我只对一行进行另一次更新(例如),则需要另外两秒钟(几乎正好是两秒钟):

sql = "update myTable set zipCode = 02930 where ID = 67890"  
conn.execute(sql)

使用之前的设置(SQL Server 2008 R2 / Windows Server 2012 R2 / IIS 8),创建连接需要几毫秒,然后像上面这样的简单更新需要 1-2 毫秒。但是现在每个连接和对该连接的每个操作都需要 2 秒 + 应该花费的时间(例如 2 毫秒)。

我猜测 IIS 10 中 SQL Server 连接的默认设置以某种方式发生了变化,这就是导致问题的原因,但我不确定。顺便说一句,我使用 IIS 中的默认 IUSR 帐户连接到 SQL Server(在旧设置中和现在)。

【问题讨论】:

  • 哇,我从没想过我会在 2002 年首次看到经典 ASP 在 2019 年仍然存在。我在这里抓住了稻草,也许您需要将连接字符串更改为 Integrated Security=True。我也会尝试使用 Provider=SQLNCLI11。我在想也许它与连接字符串有关,而且很可能是错误的,但这是一个简单的尝试。
  • 就是这样。谢谢!!

标签: sql-server iis


【解决方案1】:

根据我对问题的评论是正确的,我将把它作为其他人的答案:

请尝试对您的连接字符串进行以下(每一项或多项)更改:

集成安全=正确 提供者=SQLNCLI11

SSPI 可以很好地与 SQLClient 和 OleDB 配合使用,这就是为什么它通常是首选的原因,但也许兼容性部分使它变慢,因为它试图优雅地使一切正确。提供程序部分从 sqloledb 更改为 SQLNCLI11 会强制引擎使用 SQLClient,因为您很可能正在使用 SQL Server,无需再次寻求兼容性(假设切换到 Oracle)。兼容性有时会影响性能。

参考文献:

What is the difference between Integrated Security = True and Integrated Security = SSPI?

Difference between Sql Connection and OLEDB Connection

【讨论】:

    猜你喜欢
    • 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
    相关资源
    最近更新 更多