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

k7fdbhmy  于 2023-08-05  发布在  SQL Server
关注(0)|答案(1)|浏览(175)

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

字符串
第一个问题,创建连接需要两秒钟(每个连接都需要两秒钟)。并且即使连接应该保持打开,后续的连接(相同的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毫秒。但是现在每个连接和该连接上的每个操作都需要两秒+它应该花费的时间(例如,2ms)。
我猜是IIS 10中SQL Server连接的默认设置发生了变化,这就是导致问题的原因,但我不确定。顺便说一句,我在IIS中使用默认的IUSR帐户连接到SQL Server(无论是在旧的设置还是现在)。

bpzcxfmw

bpzcxfmw1#

由于我对这个问题的评论是正确的,我将把它作为其他人的答案:
请尝试对您的连接字符串进行以下更改(每一项或组合):

Integrated Security=**True**
Provider=**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

相关问题