IIS 10 / SQL Server 2017 / очень медленные соединения с классическим ASP - PullRequest
0 голосов
/ 21 февраля 2019

Я использую классический 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 мс).

Я предполагаю, что каким-то образом настройки по умолчанию для соединений SQL Server в IIS 10изменились, и это то, что вызывает проблему, но я не уверен.Кстати, я использую учетную запись IUSR по умолчанию в IIS для подключения к SQL Server (как в старой настройке, так и сейчас).

1 Ответ

0 голосов
/ 21 февраля 2019

В соответствии с моим комментарием к вопросу, который был правильным, я просто сделаю его ответом для всех остальных:

Пожалуйста, попробуйте следующее (каждое или их сочетание) изменить в строке подключения:


    Integrated Security=<b>True</b>
    Provider=<b>SQLNCLI11</b>

SSPI хорошо работает как с SQLClient, так и с OleDB, поэтому его обычно предпочитают, но, возможно, часть совместимости делает его медленнее, так как пытается изящно все исправить.Изменение части провайдера с sqloledb на SQLNCLI11 вынуждает движок использовать SQLClient, так как, скорее всего, вы используете SQL Server, не нужно снова переходить на совместимость (скажем, переключение на Oracle).Совместимость иногда снижает производительность.

Ссылки:

В чем разница между интегрированной безопасностью = True и интегрированной безопасностью = SSPI?

Разница между соединением Sql и соединением OLEDB

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...