У меня есть старое веб-приложение, построенное с VBScript на сервере IIS6 с базой данных SQL Server 2008. Он обрабатывается при перемещении на новый сервер на IIS8.Параметры команды ADODB Refresh не извлекает параметры
Каждый запрос в приложении работает с хранимыми процедурами, с которыми у нас никогда не было проблемы. Но на новом сервере это не работает. Я нашел это потому, что Command.Parameters.Refresh
не возвращает параметры должным образом.
Рассмотрим этот код:
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = conn
cmd.CommandType = 4
cmd.CommandText = v_strSpName
cmd.CommandTimeout = 0
cmd.Parameters.Refresh
For i = LBound(v_arrParameters) To UBound(v_arrParameters)
If m_bReplaceEmptyToNull Then
v_arrParameters(i)(1) = ReplaceEmpty(v_arrParameters(i)(1))
End If
cmd.Parameters(v_arrParameters(i)(0)).value = v_arrParameters(i)(1)
Next
Все в v_arrParameters
существует, но я попытался переборе в Parameters.name после обновления, параметры не возвращаются (но они находятся на сервере).
Также стоит отметить, то SQL Profiler действительно получает запрос и возвращает параметры:
exec [Database]..sp_procedure_params_rowset N'get_company',1,N'dbo',NULL
Согласно this page, это известная проблема, я просто хочу, чтобы убедиться, что он не приходит от этого проблемы и найти решение или альтернативу, которая не предполагает полного переписывания приложения.
Кроме того, нет я не могу обновить версию SQL Server, переключитесь на VB.NET, всегда есть проблема, что есть клиент, который не будет платить за эту проблему.
Извините, я пропустил, где эта страница заявляет, что это известная проблема? Ближайший я могу видеть, что вы называете * «Известная проблема» * is * «Parameters.refresh ** не будет работать в некоторых ситуациях ** или вернуть неверную информацию». *. В каких ситуациях он не говорит. Лично я не использую '.Refresh()' именно по этой причине, поскольку перед использованием этого метода у меня возникли проблемы с поддержкой в Providers. – Lankymart
@ Lankymart Это то, о чем я говорил с этой «известной проблемой», но не говорю, что ситуации довольно бесполезны. Что вы используете вместо '.Refresh()'? –