IIS 10 / SQL Server 2017 /与经典ASP的连接速度非常慢

时间:2019-02-21 04:10:53

标签: sql-server iis

我已经运行经典的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")

第一个问题,创建连接需要2秒钟(对于每个连接,实际上是2秒钟)。即使该连接应该保持打开状态,该页或另一页上的后续连接(相同的db;相同的连接字符串)也需要花费两秒钟的时间(即使我将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(无论是在旧设置中还是现在)。

1 个答案:

答案 0 :(得分:0)

根据我对这个问题的评论是正确的,我将其作为其他所有人的答案:

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


    Integrated Security=True
    Provider=SQLNCLI11

SSPI与SQLClient和OleDB都可以很好地工作,这就是为什么通常首选SSPI的原因,但是兼容性部分可能会使其变慢,因为它试图从容地使所有内容正确无误。提供程序部分从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