ADODB命令参数刷新不检索参数

时间:2017-01-10 17:08:09

标签: sql-server sql-server-2008 iis vbscript adodb

我有一个旧的Web应用程序,在带有SQL Server 2008数据库的IIS6服务器上使用VBScript构建。在IIS8上处理被移动到新服务器。

应用程序中的每个查询都使用存储过程,我们从未遇到过问题。但是在新的服务器上,它似乎并不起作用。我发现它是因为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事件探查器确实收到了查询并返回参数:

exec [Database]..sp_procedure_params_rowset N'get_company',1,N'dbo',NULL

根据this page,这是一个众所周知的问题,我只是想确保它不是来自这个问题,并找到一个并不意味着完整的解决方案或替代方案重写申请。

另外,我不能更新SQL Server版本,切换到VB.NET,总有一个问题是有一个客户不会为这个问题买单。

1 个答案:

答案 0 :(得分:0)

所以我们设法让它以这种方式运作:

  • 在IIS管理器中打开“应用程序池”部分。
  • 进入默认应用程序池的高级设置(此处的名称,可能不适合所有人,我不知道)
  • Enable 32-bits apps设为True

这是在64位Windows Server 2012 R2上,带有Microsoft SQL Server 2008(SP4) - 10.0.6241.0(X64)。