問題タブ [jtds]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
405 参照

sql-server-2008 - SQL Server 2008 R2 での jtds - 「ソケット書き込みエラー」

古いインストールを新しいホスティング パートナーに移動したところ、apache (6.0.20) から SQL Server 2008 R2 (実行中の別のホスト上)。現在の jTDS (1.2.5) jdbc ドライバーを使用しています。移動前に問題は発生しませんでした。

MS SQL Server のスペシャリストは、問題が MS Server 2008 R2 で jTDS を実行していることに関連している可能性があることを示唆しています。

Q: 私たちの問題が jTDS の使用に関連しているという理論 (そして、MS JDBC ドライバーを使用したほうがよいという理論) を支持 (または反証) できる人はいますか?

0 投票する
1 に答える
2053 参照

java - ResultSetオブジェクトが閉じています-jtds

JTDSを使用してMS-SQL2005に接続しています。Springで構成されたDB接続プールとしてc3p0を使用しています。

Invalid state, the ResultSet object is closed接続プールへの参照を渡したGroovyスクリプトでSQLExceptionがランダムに発生します。スクリプトはタイマーによって頻繁に実行されます。ランダムとは、スクリプトが99%の確率で完全に機能することを意味しますが、失敗した場合は2、3回機能し、その後再び正常に機能し、中断したところから再開します。重要な作業はすべてトランザクションで行われ、メッセージキューを引き出します。

以下のロジック:

同様のGroovyスクリプトを実行する別のタイマースレッドがありますが、この問題は発生していません。そのスクリプトは、同様の呼び出しを使用して接続を取得し、接続を閉じます。

当初、2番目のスクリプトは、プールから同じ接続を取得し、最初に終了してから接続を閉じている可能性があると考えていました。しかし、c3p0のドキュメントには、呼び出しconn.close()は単にプールに戻す必要があると書かれています。

他の誰かがこれを見たことがありますか、それとも私はここで何か大きなものを見逃していますか?

ありがとう。

0 投票する
2 に答える
2056 参照

java - JTDS(Java / MSSQL)-ストアドプロシージャが見つかりませんでした

JTDSとJavaを使用して、MicrosoftSQLデータベースに接続しています。データベースに完全に接続できます。ただし、以下のコードを実行すると、「ストアドプロシージャ'get_queue_items'が見つかりませんでした」というエラーが発生します。「dbo」のプレフィックスを付けてみました。ストアドプロシージャ名に変更しますが、引き続きエラーが発生します。参考のために、実際のストアドプロシージャも含めました。

そしてストアドプロシージャ:

私はJTDSとJavaに慣れていないので、私が責任を負っている可能性がありますが、助けていただければ幸いです。

編集:Cristianのアドバイスに従ってストアドプロシージャを変更しましたが、同じエラーが発生します'ストアドプロシージャが見つかりませんでした'get_queue_items'

編集2:まだ機能していません-データベース接続も問題ないようです。

0 投票する
2 に答える
8939 参照

java - Glassfish、jTDS、SQLServer2008でデータベース接続が予期せず閉じられました

Glassfishで実行されているJavaEEアプリケーションがあり、jTDSを介してMSSQLServer2008に接続しています。なんらかの理由で、データベース接続がリクエスト中に予期せず閉じられます。アプリケーションは巨大ですが、エラーがどのように発生するかの概要は次のとおりです。

Glassfishのセットアップ中に、とで接続プールを作成しasadmin create-jdbc-connection-poolますasadmin create-jdbc-resource。データソースクラスはnet.sourceforge.jtds.jdbcx.JtdsDataSourceです。

Glassfishが起動すると、ServletContextListener.contextInitialized()の実装が呼び出され、JNDIからデータソースがフェッチされます。データソースは静的変数に保存されます。

しばらくの間、すべてがうまくいきます。すべてのリクエストが処理され、接続は閉じられません。このアプリケーションは、TimerおよびMDB(Message Driven Bean)EJBを使用して処理を実行します。

これはサンプルonMessage()実装です:

最終的に、次の例外が発生し始めます(1時間に約100回発生します)。

例外はランダムなJDBC呼び出しで発生します。ResultSetの反復中の場合もあれば、クエリの実行中の場合もあります。

非常にまれなケース(1時間に7回)では、次の例外が発生します。

また、非常にまれなケース(1時間に5回)では、次の例外が発生します。

まれに、この恐ろしい例外(jTDS内のNPE)が発生します。

なぜこれが起こるのかわかりません。使用された接続は、要求中に1秒を超えてアイドル状態になることはありません。誰が接続を切断しているのかわかりません。ネットワークが不安定な場合もありますが、jTDSではネットワーク関連の例外のみが発生するはずです。

もう1つのオプションは、Glassfish接続プールのポリシーまたは構成です(Glassfishが物理接続を途中で閉じている可能性があります)が、どのように追跡できますか?

最後に、MS SQL Server 2008はリモートで接続を切断する可能性がありますが、サーバー側を監視して、接続が発生しているかどうかを確認するにはどうすればよいでしょうか。

0 投票する
1 に答える
1942 参照

java - データベースの再起動後に jdbc データソースを sybase ASE 12.5 に再接続する

jtdsドライバーをcommons-dbcp接続プールとして使用する Java アプリケーションがあります。このアプリケーションは に接続しますSybase ASE 12.5。定期sybase的にメンテナンスのため再起動します。再起動後、アプリケーションは に再接続しようとしますsybaseが、次の例外で常に失敗しているようです:

springデータソースの構成は次のとおりです。

ネットワーク インターフェイスを無効にしてから有効にしてネットワーク障害をエミュレートしようとすると、すべてが期待どおりに機能し、アプリが正常に再接続されます。

ドライバーも試しjconnect sybaseましたが、成功しませんでした。

完全修飾オブジェクト名を指定することでこの問題を回避できることは理解していますが、その場合、ソースを何度も編集する必要があるため、より簡単な解決策を探しています。

誰かがそのような問題に直面したことがありますか?

0 投票する
1 に答える
1036 参照

java - Hibernate Criteria API を使用するとパフォーマンスが低下する

Hibernate を使用して MsSQL 2005 サーバーと通信する Java アプリケーションがあります。ドライバーはnet.sourceforge.jtds 1.2.4.

物事は機能していますが、パフォーマンスはひどいものです。応答時間はテーブル内のエントリ数に比例するため、渡されたクエリにインデックスが使用されていないと思われます。


私は、同じドライバー (jtds) を使用し、Hibernate を使用しない小さなテスト アプリケーションを作成しました。パフォーマンスの低下を再現できました (またはそう信じています)。プリペアド ステートメントを使用すると、Hibernate を使用した場合と同じようにパフォーマンスが低下しますが (応答時間は ~1 秒)、使用しない場合はパフォーマンスが向上します (~10 ミリ秒)。

Hibernate executeSqlインターフェイスの代わりにメソッドを使用して同じ優れたパフォーマンスを得ることができCriteriaますが、コードをモジュールのままにしておき、結果がエンティティ クラスに変換されないため、これを避けたいと考えています。

クエリを作成し、結果をエンティティ クラス オブジェクトに変換するバックエンドに依存しない方法を使用しながら、Hibernate で良好なパフォーマンスを得る方法はありますか?

0 投票する
1 に答える
1537 参照

sql - jTDS JDBCが例外をスローすべきときに例外をスローしない

jTDS JDBC ドライバーを使用した次のコードに問題があります。すべてが機能し、クエリも問題ありません。ただし、接続に失敗してもエラー/例外は発生しません。偽の IP の入力、ローカル ネットワーク接続の無効化、偽のポート番号の提供などを試みましたが、うまくいきませんでした。接続がいつ失敗したかを知る必要があります。

「con = java.sql.DriverManager.getConnection(url, id, pass);」という行ですべてが停止しているようです。(ただし、本当に例外をスローする必要がある場合のみ...)

0 投票する
1 に答える
4113 参照

java - JTDSドライバーは古くなっていますか?

現在、JavaEEアプリケーションからMSSqlServerへのデータソースを作成するために使用するドライバーを決定しようとしています。

数年前、私はJTDSで良い経験をしました、そしてSOの答えは、JTDSが当時の好みであったことを示唆しています。

しかし今では、最新バージョン1.2.5が2年前(2009年12月30日)であることがわかります。

MS独自のドライバーを選択するのに十分な理由ですか、それともJTDSが非常に優れているため、開発が不要になっていますか?:)

0 投票する
0 に答える
2525 参照

sql - SQL Server、JTDS により java.sql.SQLException: Invalid state, the ResultSet object is closed が発生する

Tomcat 7、Microsoft SQL Server 2008 RC2、および JTDS ドライバーを使用しています

私は実際に C3P0 も使用してこの問題を解決しようとしていますが、まったく違いはありません。Microsoft のドライバーを使用していましたが、他の問題が発生しました (要求された操作は、転送のみの結果セットではサポートされていません)。

常に同じポイントで、次のエラーが発生します。この時点に到達する前に、他のクエリを正常に実行しました。

java.sql.SQLException: 無効な状態です。ResultSet オブジェクトは閉じられています。net.sourceforge.jtds.jdbc.JtdsResultSet.checkOpen(JtdsResultSet.java:287) で net.sourceforge.jtds.jdbc.JtdsResultSet.findColumn(JtdsResultSet.java:943) で net.sourceforge.jtds.jdbc.JtdsResultSet.getInt (JtdsResultSet.java:968) com.mchange.v2.c3p0.impl.NewProxyResultSet.getInt(NewProxyResultSet.java:2573) com.tt.web.WebPosition.createPosition(WebPosition.java:863)

コードは次のとおりです。

上記の 2 行の間でコードが失敗します。

結果セットが関数の途中で閉じられる理由を説明するのに途方に暮れています (つまり、rs.getString("SYSDATE_4_EXCEL") を取得しますが、rs.getInt("EXERCISE_STYLE_CD") 行に投稿されたエラーで失敗します)。 )))

誰にもアイデアはありますか?ある種のメモリの問題であり、一定量のデータの後に接続が自動的に閉じられると思いますが、これを修正する方法がわかりません。JVM のヒープサイズを増やしてみました。