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

ADODB Command Parameters Refresh doesn't retrieve parameters

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

应用程序中的每个查询都使用存储过程,我们从来没有遇到过问题。但是在新服务器上,它似乎不起作用。我发现这是因为 Command.Parameters.Refresh 没有正确 return 参数。

考虑这段代码:

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 中迭代,参数未 returned(但它们在生产服务器上)。

同样值得注意的是,SQL Profiler 确实收到了查询和 return 参数:

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

根据this page,这是一个已知问题,我只是想确保它不是来自这个问题,并找到一个不意味着完全重写的解决方案或替代方案应用程序。

另外,不行我不能更新SQL服务器版本,切换到VB.NET,总是有客户不支付这个问题。

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

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

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