Я бегу классический ASP на IIS и есть скрипт для создания подключения к базе данных SQL Server, используя следующий код:SQL Server Возвращает Empty Recordset ADODB.Connection
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 (доступ через эти же учетные данные пользователя) запросы возвращают полные наборы записей.
Есть ли что-нибудь еще, что я могу сделать/проверить, чтобы решить эту проблему? Это действительно меня озадачивает!
Что касается вашего пустого вопроса о наборе записей, он префикс ваших утверждений с помощью 'SET NOCOUNT ON;' help? –
Нет, к сожалению, нет, он по-прежнему возвращает пустой набор записей, и теперь значение rs.RecordCount равно -1 вместо 0 – user1145348
. Убедитесь, что если вы используете драйвер SQLOLEDB, который вы установили, соответствующий SQL-сервер 2000, установленный в вашем сервер, если нет, то используйте соответствующий драйвер родного клиента. В некоторых случаях я сообщал о нечетном поведении, когда не использовал правильный драйвер. – Rafael