2017-01-10 6 views
0

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に切り替えることはできません。この問題を解決しないクライアントが常に存在するという問題があります。

+0

申し訳ありませんが、このページには既知の問題が記載されています。 *「既知の問題」*と記述されていることに最も近いのは*「Parameters.refresh **は状況によっては失敗する**、まったく間違っている情報を返す」*です。どのような状況、それは言うことはありません。個人的には、私はこのメソッドを使う前にProvidersでのサポートに問題があったので、この非常に理由で '.Refresh()'を使用しません。 – Lankymart

+0

@ Lankymartこれは、私がこの「既知の問題」について話していたことですが、状況がかなり役に立たないと言っているわけではありません。あなたは '.Refresh()'の代わりに何を使用しますか? –

答えて

0

だから我々は、それがこのように動作させるために管理:

  • は、IISマネージャでアプリケーションプール]セクションを開きます。これは、64ビットWindows上でEnable 32-bits apps
  • Trueから

デフォルト設定アプリケーションプール(ここでは、その名前、そうでないかもしれない皆のために、私は知らない)

  • の[詳細設定]に行く
  • サーバー2012 R2、Microsoft SQL Server 2008(SP4) - 10.0.6241.0(X64)。

  • 関連する問題