SQL Server 2008データベースを持つIIS6サーバーにVBScriptで構築された古いWebアプリケーションがあります。 IIS8の新しいサーバーに移動して処理されています。ADODBコマンドパラメータRefreshでパラメータが取得されない
アプリ内のすべてのクエリは、問題が発生していないストアドプロシージャで動作します。しかし、新しいサーバーでは、動作していないようです。 Command.Parameters.Refresh
がパラメータを適切に返さないためです。
は、このコードを考えてみましょう:v_arrParameters
で
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
すべてが存在しますが、私はリフレッシュした後Parameters.nameに反復してみました、パラメータが返されます(ただし、彼らが本番サーバー上にある)されていません。また
注目に値する、SQLプロファイラは、クエリを受信したパラメータを返しません:
exec [Database]..sp_procedure_params_rowset N'get_company',1,N'dbo',NULL
this pageによると、それは私はちょうどそれがここから来ていないことを確認したい、既知の問題ですアプリケーションの完全な書き換えを意味するものではない解決策または代替方法を見つけることができます。
また、SQL Serverのバージョンを更新することはできません.VB.NETに切り替えることはできません。この問題を解決しないクライアントが常に存在するという問題があります。
申し訳ありませんが、このページには既知の問題が記載されています。 *「既知の問題」*と記述されていることに最も近いのは*「Parameters.refresh **は状況によっては失敗する**、まったく間違っている情報を返す」*です。どのような状況、それは言うことはありません。個人的には、私はこのメソッドを使う前にProvidersでのサポートに問題があったので、この非常に理由で '.Refresh()'を使用しません。 – Lankymart
@ Lankymartこれは、私がこの「既知の問題」について話していたことですが、状況がかなり役に立たないと言っているわけではありません。あなたは '.Refresh()'の代わりに何を使用しますか? –