Я использую классический ASP на IIS и у меня есть скрипт для создания соединения с базой данных SQL Server с использованием следующего кода:
Dim adoConn As Object
adoConn = Server.CreateObject("ADODB.Connection")
adoConn.Open ("Provider=SQLOLEDB; Data Source=localhost; Initial Catalog=Engineering_Test; User ID=*********; Password=*******")
Затем я запускаю запросы выбора SQL для этого соединения следующим образом:
Dim rs As Object
rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT [User ID] FROM [Users] WHERE [Username]='" & username & "' AND [Password]='" & password & "'"
rs.Open(SQL, adoConn, 3, 3)
Все работало нормально, но потом я обнаружил, что у меня много спящих процессов на сервере, и он начал отказывать в соединениях, потому что я предположительно превысил все разрешенные соединения с сервером. На самом деле то, что я видел на экране, это мои SQL-запросы, возвращающие пустые наборы записей, хотя на самом деле они должны были содержать несколько строк.
Итак, я убил все спящие процессы на сервере, перезапустил SQL Server и IIS, однако выполняемые мной SQL-запросы по-прежнему возвращают пустые наборы записей, ошибки не отображаются и все компилируется, как ожидалось.
Когда я вхожу на сервер с помощью удаленного рабочего стола и выполняю те же самые запросы в SQL Server Management Studio (доступ к которым осуществляется с помощью тех же учетных данных пользователя), запросы возвращают полные наборы записей.
Что еще я могу сделать / проверить, чтобы решить эту проблему? Это действительно сбивает с толку меня!