1

'stuck'Glassfish インスタンスで実行されている Hibernate から発行された場合、SQL Server 2008での接続に問題があります。

場合によっては、ストアド プロシージャが 10 ~ 20 回呼び出されることがありますが、これらはすべて'sleeping'であり、多数のトランザクションを開いたままにしています。

DBCC INPUTBUFFERがそれらについてもっと知るために使用するとき、それは持っています:

名前: Implicit_transaction

これは、Java アプリが'SET IMPLICIT_TRANSACTIONS ON'バッチの一部として設定されていることを意味しますか? そのトランザクション名 DB 側を複製できた唯一の方法は、その構文を使用することでした。

Java アプリが接続にハングアップしているように見えますが、どういうわけか呼び出し自体のコンテキストが失われているため、トランザクションをコミットするために戻ってくることはありません。

Java 開発者は、明示的に接続を定義していないと言い、他の接続プロパティを意図的に設定していることを否定していません。呼び出しはすべて、READ COMMITTED 分離レベルで行われています。

非表示の属性セットがあるかどうか、または休止状態の設定がこの迷惑な動作を引き起こしているかどうかを確認するにはどうすればよいですか?

4

1 に答える 1

0

Hibernate に、実行中の SQL ステートメントをログに記録するように依頼できます。

この記事では、それを行う 2 つの方法について説明します。

SessionFactory sf = new Configuration()
    .setProperty("hibernate.show_sql", "true")
    // ...
    .buildSessionFactory();

またはlog4j構成で

log4j.logger.org.hibernate.SQL=DEBUG, SQL_APPENDER
log4j.additivity.org.hibernate.SQL=false
于 2013-01-14T09:23:48.457 に答える