Sybase データ・ソースへのデータ・アクセスの問題
この項目では、Sybase データ・ソースにアクセスする際のトラブルシューティングのヒントを提供しています。
Sybase データベースへのアクセス時に、どのような問題が発生しましたか?
- "Sybase Error 7713: Stored Procedure can only be executed in unchained transaction mode" エラー
- 「JZ0XS: The server does not support XA-style transactions.Please verify that the transaction feature is enabled and licensed on this server.」
- コンテナー管理パーシスタンス (CMP) エンタープライズ Bean により例外が発生します。
- Sybase の使用時にデータベースのデッドロックと XA_PROTO エラーが発生する
- データベース名を間違って指定しても 、Sybase が例外をスローしない
「Sybase Error 7713: Stored Procedure can only be executed in unchained transaction mode」エラー
- JDBC が autocommit(true) モードで接続を試みた。
- ストアード・プロシージャーが互換モードで作成されていない。
autocommit(true) モードの問題を解決するには 、Connection.setAutoCommit(false) モードを使用したり 、set chained on 言語コマンドを使用したりして、アプリケーションが 接続をチェーン・モードに変更できるようにします。
ストアード・プロシージャーの問題を解決するには、 コマンド sp_procxmode procedure_name "anymode" を使用します。
"「JZ0XS: The server does not support XA-style transactions. Please verify that the transaction feature is enabled and licensed on this server」"
このエラーは、分散トランザクション管理 (DTM) がインストールされていないサーバー上で、XA スタイル・トランザクションが試みられると発生します。
- DTM オプションをインストールする。
- license.dat ファイルを調べて、 DTM オプションがインストールされたことを確認する。
- ライセンス・マネージャーを再始動する。
- ISQL で DTM を使用可能にする。
- ASE サービスを再始動する。
コンテナー管理パーシスタンス (CMP) エンタープライズ Bean により例外が発生する
このエラーは、予約語の不適切な使用によって生じます。予約語は、列名として使用できません。
この問題を解決するには、変数を名前変更して、予約語を除去します。予約語のリストは、『Quick Reference Guide for Sybase Adaptive Server Enterprise 15.5』で検索できます。このマニュアルは、http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc70202.1550/html/quickref/CACIGGEB.htmでオンラインで入手できます。
Sybase の使用時にデータベースのデッドロックと XA_PROTO エラーが発生する
- 接続のトランザクション分離レベルを TRANSACTION_READ_COMMITTED に変更します。共有不能接続または共有可能接続に対する接続の分離レベルを設定し、アセンブリー・ツールを使用して、データ・ソースのリソース参照でその分離レベルを定義します。
- 以下のいずれかを実行して Sybase を変更します。
- 既存の表を使用する場合は、alter table table name lock datarows コマンドを使用して表のロック方式を変更し、行ロック・レベルの細分度を設定します。
- データ行にシステム全体のロック方式を設定すると、それ以降に作成された表はすべてその値を継承し、
データ行のロック方式を使用します。注: 元のデータベースおよび表は除去する必要があります。
データベース名を間違って指定しても 、Sybase が例外をスローしない
データベース名がデータ・ソース・プロパティーに正しく入力されていることを確認してください。
ほとんどのデータベース (DB2®、Oracle、Informix®、MS SQL Server および Apache Derby) は、指定されたデータベースが存在しないと例外をスローします。しかし Sybase は、誤ったデータベース名が指定されても例外をスローしません。Sybase は SQL 警告を生成してから、デフォルトのデータベースに 接続します。要求されたデータベース名のつづりが間違っている場合 、Sybase ではマスター・データベースまたはデフォルトのデータベースに接続されるため、 目的の表が見つからないことになります。
これらのステップのいずれでも問題をフィックスできない場合は、使用可能なオンライン・サポート (ヒント、 技術情報、およびフィックス) で、問題が確認され、文書化されているかどうかを調べます。そこに問題がリストされていない場合は、IBM サポートに連絡してください。