У меня был набор устаревших страниц, запущенных на моем сервере IIS7, по крайней мере, год. Когда-то на прошлой неделе что-то изменилось, и теперь эта строка:
Response.Write CStr(myRS(0).name) & "=" & Cstr(myRS(0).value)
, который раньше возвращал ничего более захватывающего, чем строка: «Обновлено = истина» (входные параметры sproc обрабатывают, сохраняют их в таблице, проверяют на наличие ошибок и, когда все это делается, возвращают код успеха, выполняя этот оператор:
выберите 'true' как [Обновлено]
Теперь мой обработчик ошибок на стороне страницы участвует и предлагает:
myError=Error from /logQuizScore.asp
Error source: Microsoft VBScript runtime error
Error number: 13
Error description: Type mismatch
Важно отметить, что на всех партиях используется одна и та же структура - один и тот же БД, одинаковый формат кодирования, строки подключения и (насколько я могу судить) все остальные.
Устраните неполадки до этого момента:
Вызов хранимой процедуры работает правильно (содержимое хранится в данной таблице). Вывод из хранимой процедуры работает правильно (я могу выполнить прямой вызов с заданными параметрами, и все работает. Я вижу вызов и передачу профилировщика. Я могу заменить весь код на «select» true как обновленный », и ошибка то же самое.
все до приведенного выше оператора response.write является правильным.
Так что-то изменилось, как ADO рендерит этот конкретный набор записей.
Итак, я пытаюсь: Response.Write myRS.Item.count
и получите:
Номер ошибки: 424
Описание ошибки: требуется объект
Кажется, объект набора записей не создается, а объект команды _did execute. Повторяю - множество других страниц с той же базовой логикой, чтобы без проблем поразить других звезд.
фрагмент полного кода
set cmd1 = Server.CreateObject("ADODB.Command")
cmd1.ActiveConnection = MM_cnCompliance4_STRING
cmd1.CommandText = "dbo._usp_UserAnswers_INSERT"
...
cmd1.CommandType = 4
cmd1.CommandTimeout = 0
cmd1.Prepared = true
set myRS = cmd1.Execute
Response.Write CStr(myRS(0).name) & "=" & Cstr(myRS(0).value)