Microsoft SQL Server データ・ソースへのデータ・アクセスの問題
トラブルシューティングのヒントを使用して、Microsoft SQL Server データ・ソースへのアクセスに役立ててください。
Microsoft SQL Server データベースへのアクセス時に、どの問題が発生しましたか?
- 接続エラーの後で Microsoft SQL Server JDBC Driver V2.0 が停止する
- ERROR CODE: 20001 and SQL STATE: HY000 accessing SQLServer database
- Microsoft SQL Server データベースへのアクセス時に、「Cannot find stored procedure...」というメッセージが出され、アプリケーションが失敗する
- Java アプリケーションの実行時に、ERROR CODE: SQL5042 が出る
エラー XP_SQLJDBC_XA_INIT のために JAVAX.TRANSACTION.XA.XAEXCEPTION が発生する
接続エラーの後で Microsoft SQL Server JDBC Driver V2.0 が停止する
Microsoft SQL Server JDBC Driver のバージョン 2.0 を使用している場合 (他のバージョンではこの問題は起きません)、接続エラーが発生した後で停止することがあります。この問題は、http://support.microsoft.com/kb/977924 にある Microsoft 提供のテスト・フィックスによって修正されます。
ERROR CODE: 20001 and SQL STATE: HY000 accessing SQLServer database
Distributed Transaction Coordinator サービスが開始されていない可能性があります。
Microsoft SQL Server
データベースへのアクセスの試行中に、以下のようなエラーが発生しているかどうか探してください。
ERROR CODE: 20001
SQL STATE: HY000
java.sql.SQLException: [Microsoft][SQLServer JDBC Driver]
[SQLServer]xa_open (0) returns -3
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source) ...
at com.microsoft.jdbcx.sqlserver.SQLServerDataSource.getXAConnection(Unknown Source) ...
この問題を確認するには、以下を行います。
- Windows に移動します。または、 の順にクリックします。
- Distributed Transaction Coordinator、すなわち DTC サービスが始動済みかどうかを確認します。
- 開始していない場合は、Distributed Transaction Coordinator サービスを開始します。
Microsoft SQL Server データベースへのアクセス時に、「Cannot find stored procedure...」というメッセージが出され、アプリケーションが失敗する
Java™ Transaction API (JTA) フィーチャーのストアード・プロシージャーが Microsoft SQL Server 上にインストールされていないと、このエラーが生じることがあります。
この問題を解決するには、JDBC ドライバーのインストール・ガイドに従って、JTA フィーチャーのストアード・プロシージャーのインストールを繰り返します。
Java アプリケーションの実行時に、ERROR CODE: SQL5042 が出る
このエラーは、稼働させるアプリケーションを次のように構成すると起こります。
- OS 390 へのゲートウェイ上で稼働するタイプ 2 (アプリケーション用) ドライバーを使用する。
- アプリケーションが XA アプリケーションである。
OS 390 で、XA を使わずに、SPM を使う。 この問題を解決するには、以下のようにします。
- SPM がまだゲートウェイで起動していないか、dbm cfg を調べます。
- ポートを割り当て、db2comm 変数を TCPIP に設定します。
- dbm cfg 値 SPM_NAME を更新し、マシンの名前を使えるようにします。
- ゲートウェイで SPM を起動します。
![[Windows]](../images/windows.gif)
エラー XP_SQLJDBC_XA_INIT のために JAVAX.TRANSACTION.XA.XAEXCEPTION が発生する
Windows Server 2003 で Microsoft SQLSERVER データベースを使用していて、SQL Server のクラスターをあるノードから別のノードに移動するか、そのクラスターをシャットダウンすると、Windows コンポーネント・サービスの
の設定が無効にリセットされることがあります。この問題が発生した場合は、JDBC ドライバーが XA トランザクションに対して有効ではなくなるため、XP_SQLJDBC_XA_INIT というエラーが原因で JAVAX.TRANSACTION.XA.XAEXCEPTION が発生することがあります。Windows コンポーネント・サービスで XA トランザクションを再度有効にするには、以下のアクションを実行します。
- Microsoft Windows のデスクトップで、 とクリックします。
- ツリー表示を展開し、XA トランザクションのサポートをオンにする必要のあるコンピューターを探します。例えば、「マイ コンピュータ」です。
- コンピューター名のコンテキスト・メニューを表示し、 をクリックします。
- をクリックし、次に を環境に適した時間に設定します。推奨する最小設定は 180 秒です。
- をクリックし、次に をクリックします。
- で を選択してこのサポートを有効にします。
- 変更を保存する場合は、「 」をクリックします。

- KB899756: Windows 2003 のみ。MSDTC は、プロセスの終了を検出しません。また、MSDTC Windows Server 2003 で XA トランザクションのタイムアウト値を設定することはできません。
- KB318818: SQL Server で XA トランザクションを使用するとパフォーマンスが低下する