- - PR -
[VS2005]ASP.NET + Oracle更新・ロックで例外発生
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-03-14 11:47
現在ASP.Net+Oracle10gを使用したプログラムを作成しています。(C#)
ですが、更新系でたまに例外が発生します。原因が不明なんですが、VSのASP.Net開発サーバーを一度停止してもう一度実行すると発生しなくなります。 同じような経験のある方はアドバイスください。 簡単に修正したコードと例外を記述します。
※LockMethodのSQLはFOR UPDATEを付加したSELECTです。 ----------------------------------------------------------- 【例外】 System.AccessViolationException はユーザー コードによってハンドルされませんでした。 Message="保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。" Source="mscorlib" StackTrace: Server stack trace: 場所 System.Data.Common.UnsafeNativeMethods.OraMTSJoinTxn(OciEnlistContext pCtxt, IDtcTransaction pTrans) 場所 System.Data.OracleClient.TracedNativeMethods.OraMTSJoinTxn(OciEnlistContext pCtxt, IDtcTransaction pTrans) 場所 System.Data.OracleClient.OracleInternalConnection.Enlist(String userName, String password, String serverName, Transaction transaction, Boolean manualEnlistment) 場所 System.Data.OracleClient.OracleInternalConnection.Activate(Transaction transaction) 場所 System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction) 場所 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) 場所 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) 場所 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) 場所 System.Data.OracleClient.OracleConnection.Open() 場所 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 場所 System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior) 場所 System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) 場所 XXXXX 場所 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) 場所 System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) 場所 System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext) Exception rethrown at [0]: 場所 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 場所 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 場所 XXXX 場所 XXXX 場所 XXXX 場所 System.Web.UI.WebControls.Button.OnClick(EventArgs e) 場所 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) 場所 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 場所 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) 場所 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 場所 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) ----------------------------------------------------------- ※場所 XXXXとなっているところはファイル名などが入っていたのでXXXXと置き換えています。 [開発環境] WinXP VS2005 Oracle10g _________________ by うちうせん | ||||
|
投稿日時: 2008-03-14 12:17
よくはわからないですが
スタックからはOracleとMSDTC間の障害に見えますね。。。。 でTransactionScopeはやめて普通にBeginTransactionと書けばとりあえず 動作すると思います。 | ||||
|
投稿日時: 2008-03-14 13:16
もしMSDTCが関係しているのであれば、参考になるかもしれません。
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=685485&SiteID=7 | ||||
|
投稿日時: 2008-03-14 14:11
返答ありがとうございました。
rainさんのURL先と同じ対処を行ったところ解決したような感じがします。 |
1