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)。
我有一个旧的 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)。