我已经运行经典的 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 毫秒)。
我猜想 IIS 10 中 SQL Server 连接的默认设置以某种方式发生了变化,这就是导致问题的原因,但我不确定。顺便说一句,我使用 IIS 中的默认 IUSR 帐户连接到 SQL Server(在旧设置和现在)。