我有一个旧的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,总有一个问题是有一个客户不会为这个问题买单。
答案 0 :(得分:0)
所以我们设法让它以这种方式运作:
Enable 32-bits apps
设为True
这是在64位Windows Server 2012 R2上,带有Microsoft SQL Server 2008(SP4) - 10.0.6241.0(X64)。