0

PetaPocoを使用してデータベース内のデータを更新する ac# Windows サービスがあり、すべてトランザクションにラップされています。ただし、トランザクションの実行中にデータベースをクエリに使用できるようにする必要があります (Web アプリ、ODBC 接続を介してクエリを実行する) が、トランザクションのコミット中にクエリを実行すると、データベースから "致命的なエラー" エラーが発生します。現在、MS SQL Server に対してテストしていますが、これは Oracle データベースに対しても機能する必要があります。

PetaPoco トランザクションのトランザクション分離レベルを設定する方法はありますか? この場合、これが解決策になる可能性がありますか?

4

1 に答える 1

0

「壊滅的な障害」メッセージは、PetaPoco と既存の Web アプリの両方からの更新によって引き起こされたデータベースのデッドロックが原因であることが判明しました。テーブルをロックすることでこれを解決しました

SELECT TOP 1 * FROM [TABLENAME] WITH (TABLOCKX) 

PetaPoco トランザクションの開始時にクエリを実行します。

于 2012-11-30T14:25:01.767 に答える