3

IISのWindowsServer2003でホストされているASPClassicレガシーWebアプリケーションがあり、 AS/400であるデータベースサーバーに接続します。現在、データベースサーバーをv5r4m0からv6r1m0にアップグレードしたばかりなので、Webサーバーに更新をインストールして、新しいデータベースサーバーに接続し、すべての接続文字列を適切なデータベースサーバーに変更します。

ASPクラシックサイトに次のコードがあります。

set objConn2 = server.CreateObject("ADODB.Connection")
objConn2.open connStringGlobal

objConn2.BeginTrans

if rsCheck.eof then
    objConn2.execute(InsertQuery)
    objConn2.execute(InsertQueryRCDREF)
    objConn2.execute(UpdateQuery)
end if

objConn2.CommitTrans

if err.number <> 0 then
    session("errMsg") = "An error occured while processing your request. Please try again. <br><br>[Error Description : " & err.Description & "]<br><br>" & InsertQuery & "<br><br>" & UpdateQuery & "<br><br>" & InsertQueryRCDREF
    objConn2.RollBackTrans  
    objConn2.close
    set objConn2 = nothing
    response.Redirect(request.ServerVariables("HTTP_REFERER"))
else    
    objConn2.close
    set objConn2 = nothing
    response.Redirect("default.asp?p=pending")
end if

objConn2.BeginTransしかし、次の行にエラーがスローされます。

CWBZZ5008システムに接続しようとしたときにセキュリティエラーが発生しました

ここで何が起こるかというと、接続が開かれ、行objConn2.executeが実行され、データがロールバックトランザクションを経て接続を閉じ、UIにエラーメッセージが表示されても、データがデータベースに挿入されます。

これまでに試したことは次のとおりです。

  • 接続文字列サーバー名をデータベースサーバーのIPアドレスに置き換えます
  • 閉じられていない接続がある場合は、すべてのレガシーコードを確認してください

しかし、それでも私たちは運がありません。このサイトは現在本番環境にあり、このエラーのために停止されています。そのため、これを修正する必要があり、すでに何日も修正を試みていました。本当に助けが必要です。


同じサーバーとASPClassicで実行され、トランザクションで同じデータベースサーバーに接続する他のサイトは正常に機能しますが、このコードを使用するこのサイトのみがエラーをスローします。

4

1 に答える 1

0

問題は、古いデータベースサーバーから新しいデータベースサーバーに移行されたテーブルにまだジャーナルがないため、トランザクションの使用時にエラーが発生するためでした。

ジャーナルは、トランザクションとデータベースの変更の監査証跡を維持します。トランザクションログとデータベース変更ログが使用されます。トランザクションログには、データ値、トランザクションの時間、端末番号など、各トランザクションのすべての重要なデータが記録されます。データベース変更ログには、トランザクションによって変更されたレコードのコピーの前後が含まれます。-wikipedia.org _

于 2012-05-18T02:26:43.070 に答える