JDBC と jTDS を使用して SQL Server データベースにアクセスする Java で記述された Web サイトを運営しています。
私たちのデータベースには、実行に通常 10 分かかる複雑なストアド プロシージャが含まれています。ストアド プロシージャは、トランザクションで実行されないため、(SQL Server Management Studio などから) 直接実行すると問題なく動作します。しかし、jTDS を使用して実行すると、Web サイト全体が 10 分間ロックされます。これは、jTDS がトランザクションでそれを実行し、すべての Web サイト リクエストがトランザクションの完了を待っているために発生します。
たとえば、次の場合、トランザクションが原因で Web サイトがロックされます。
Connection connection = DriverManager.getConnection("jdbc:jtds:sqlserver://example/example");
CallableStatement callableStatement = connection.prepareCall("exec dbo.procTest");
callableStatement.execute();
トランザクションで実行せずに、JDBC / jTDS を使用してストアド プロシージャを実行する方法はありますか?
jTDS 接続でこれを呼び出すことは有効ではないことに注意してください。
connection.setTransactionIsolation(Connection.TRANSACTION_NONE);
これにより、Connection.TRANSACTION_NONE パラメータが jTDS でサポートされていないことを示す例外がスローされます。
編集:私はおそらくより良い質問をすることができたでしょう:コアの問題はトランザクション自体ではありません.問題は、トランザクションがデータベースロックを10分間保持することです. トランザクションを取り除く必要があるか、トランザクション中にロックを解除する必要があります。