我有一箇舊的Web應用程序,使用VBScript與SQL Server 2008數據庫的IIS6服務器上構建的。它處於被移動到IIS8上的新服務器的狀態。ADODB命令參數刷新不檢索參數
與存儲過程中,與我們從來沒有問題的應用程序工作的每個查詢。但在新的服務器上,它似乎不起作用。我發現它是因爲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,總是有問題,有一個客戶端,將不支付這個問題。
對不起,我錯過了在那裏該頁面聲明這是一個已知的問題?我可以看到你形容爲*「已知問題」最接近的*爲*「Parameters.refresh **會在某些情況下失敗**或返回是不完全正確的信息。」 *。什麼情況,它沒有說。就我個人而言,我不會使用'.Refresh()',因爲在使用此方法之前,我在提供程序中遇到問題。 – Lankymart
@Lankymart這就是我在談論這個「已知的問題」,而不是說的情況是非常無益的。你用什麼來代替'.Refresh()'? –