データベース接続と操作
Q1使用しているJDBCドライバーのバージョンを確認することはできますか?
A
データベース接続で使用しているJDBCドライバーのバージョンはRDBコネクションの接続テストの結果から確認できます。 接続テストの結果で表示される内容はフローサービスマニュアルの以下項目を参照してください。
- 「フローデザイナー操作ガイド」-「コネクション」-「接続テストを行う」
- 「フローサービス管理コンソールオンラインヘルプ」-「設定」-「コネクション」-「RDB」-「RDB接続テスト」
Q2RDBコネクションの接続テストで「Connection refused」というエラーが表示されます
A
フローサービスからデータベースへの接続を定義したRDBコネクションは、フローデザイナーや管理コンソールから接続テストを行うことができます。パイプラインではデータベース系アクションの画面で接続テストを行うことができます。接続テストの結果、次のようなエラーが表示される場合があります。
Connection refused
I/O例外です。: The Network Adapter could not establish the connection
Error establishing socket.
socket creation error
このようなエラーが表示される場合、データベースサーバーにJDBC接続ができていないことが考えられます。
次の点を確認してください。
- JDBCのURLの中に含まれているホスト名やポート番号が間違っている
- データベースサーバー側でJDBC接続が有効になっていない、たとえばOracleの場合はTNSListenerが起動されていない
- データベースサーバーが稼働しているマシン上のファイアーウォールによってポートが遮断されている
- 通信経路のネットワーク機器(ファイアーウォールなど)によって通信が遮断されている
Q3SQL Serverのコネクションテストで「ドライバーが SSL (Secure Sockets Layer) 暗号化による SQL Server への安全な接続を確立できませんでした。」というエラーが発生します
A
SQL ServerとJDBCドライバーの組み合わせによっては、下記のエラーが発生する場合があります。
com.microsoft.sqlserver.jdbc.SQLServerException: ドライバーが SSL (Secure Sockets Layer) 暗号化による SQL Server への安全な接続を確立できませんでした。エラー: "PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"
本現象はJDBCドライバーの通信形式にSQL Server側が対応していない場合に発生します。 詳しい内容につきましてはMicrosoft SQL Server JDBC の SSL 暗号化接続を確認してください。 回避方法として、弊社環境ではコネクションのURLに下記のどちらかのオプションを追記することで接続を行えることを確認しています。
encrypt=falsetrustServerCertificate=true
URL例
jdbc:sqlserver://[ホスト名]:[ポート番号];SELECTMETHOD=cursor;trustServerCertificate=true
Q4JDBCドライバーを追加するときの手順と注意点を教えてください
A
データベースに接続するためには、JDBCドライバーを使用する必要があります。
追加方法
各バージョンごとのJDBCドライバーの設置や接続設定については、下記のフローサービスマニュアルに記載されているので参照してください。
また、フローデザイナーからもJDBCドライバーを登録することができます。下記のブログを参照してください。
どのバージョンを使えばよいか
RDBに接続するためのJDBCドライバーは、現在もRDBベンダーが提供し、動作を保証する最新のJDBCドライバーを使用してください。
FAQやオンラインヘルプを含め、弊社が提供する情報の中には動作確認されたバージョンとして最新のものよりも古いバージョンが記載されていることがありますが、これは検証に使用したバージョンであり、参考情報として記載しています。
また、特定の条件でJDBCドライバーの原因で問題が発生した場合は弊社側では修正等の対応を行うことはできません。JDBCドライバーの提供元であるベンダーに確認してください。
追加後にFlowServiceが起動できない場合
ASTERIA Warpでは実行環境としてJava Runtime Environment 8(以下「JRE8」)を使用しています。(ASTERIA Warpバージョン4.9.0以降)
JRE8がサポートされないJDBCドライバーを追加するとFlowServiceのプロセスが起動できなくなる場合があります。
弊社では、JRE8がサポートされないSQL ServerのJDBCドライバーを配置することで本現象が発生し、FlowService.log には以下のようなログが出力されることを確認しています。
ERROR [framework,main] AFRM_E_1002: 初期化中にエラーが発生しました: FlowService-Engine
java.lang.UnsupportedClassVersionError: com/microsoft/sqlserver/jdbc/SQLServerDriver has been compiled by a more recent version of the Java Runtime (class file version 56.0), this version of the Java Runtime only recognizes class file versions up to 52.0
誤ってドライバーを配置した場合、以下の対応をお願いいたします。
- フローサービスを停止します。
[DATA_DIR]/system/lib/driversフォルダーにある追加したドライバーファイルを退避します。- 正しいドライバーファイルをそのフォルダーに配置します。
- フローサービスを起動し、FlowServiceプロセスが正常に起動できるか確認します。
Q5RDBコネクションの接続テストで「文字列またはバッファーの長さが無効です」と表示されます
A
64bit版ASTERIA WarpでMicrosoft社AccessまたはSQL serverにODBC接続した場合、次のエラーが発生します。
[Microsoft][ODBC Driver Manager] 文字列またはバッファーの長さが無効です。
ASTERIA Warpからの接続に関わらず64bit環境で同じエラーが発生することを確認しており、64bit版JDBC-ODBCドライバーの問題と考えられます。
Q6RDBコネクションの接続テストで「No suitable driver found for ~」というエラーになります
A
フローサービスからデータベースへの接続を定義したRDBコネクションの接続テスト、またはパイプラインのデータベース系アクションの接続テストで「No suitable driver found for ~」というエラーが表示されることがあります。 これは、JDBCドライバーが見つからないときに表示されます。
このエラーが表示された場合は、次の点を確認してください。
- 下記の場所にJDBCドライバーファイルが設置されているか
- バージョン1610以降:
[DATA_DIR]/system/lib/drivers
- バージョン1610以降:
- 設置後にフローサービスやパイプラインサービスを再起動したか
特に、JDBCドライバーファイルを設置した後のフローサービスやパイプラインサービスの再起動は忘れやすいため、注意してください。
Q7システム変数のエラー詳細でコネクションで設定した情報は取得できますか?
A
システム変数のエラー詳細で取得できる情報はエラーになったコンポーネントに設定されているプロパティの値です。
FTPコンポーネントなどで「コネクションを使用」プロパティを「はい」にしていてもエラー詳細で取得できる情報はコンポーネントに設定されているプロパティの値であり、コネクションで設定した情報をエラー詳細で取得することはできません。
Q8MySQLのJDBCドライバーを変更したらMySQLに接続できなくなった
A
MySQLにて、コネクション設定のURLに &serverTimezone=JST と記述され、JDBCドライバーのバージョン8.0.23以降を使用すると「Could not create connection to database server.」エラーが出力されます。
バージョン8.0.23以降のJDBCドライバーを使用する際、コネクション設定のURLにある &serverTimezone=JST の記述があれば削除してください。
(ASTERIA Warpバージョン2112からデーターベースタイプをMySQL8を選択しても URLに &serverTimezone=JST という記述が標準で記述されなくなりました。)
Q9JDBCドライバー MySQL Connector/J 8.0 を使うときの注意点はありますか?
A
MySQL Connector/J 8.0 から ドライバー名が変更になっています。 8.0系のJDBCドライバーを使用するときはRDBコネクションの「ドライバー」プロパティを以下に変更してください。
編集前:
com.mysql.jdbc.Driver
編集後:
com.mysql.cj.jdbc.Driver
またバージョン1806以前では、8.0系のMySQL Connector/J JDBCドライバーを使用するときは[XA]プロパティは使用できません。 [XA]プロパティを「はい」にしてコネクションを保存すると「このドライバーではXAはサポートされていません:com.mysql.cj.jdbc.Driver」というメッセージが表示されます。
Q10PostgreSQLへの接続テストで「ERROR: SET AUTOCOMMIT TOOFF is no longer supported」というエラーになります
A
このエラーは、古いJDBCドライバーを使っている場合に発生する場合があります。最新バージョンのJDBCドライバーに入れ替えて接続テストを試してみてください。
📝 NOTE
JDBCドライバーを入れ替える際は、ASTERIA Warpを停止した状態で行うようにしてください。 合わせてFAQ「JDBCドライバーを追加するときの手順と注意点を教えてください」を参照してください。
Q11DB2との接続でERRORCODE=-4220のエラーが発生する
A
Java8(ASTERIA Warp 4.9以降)においてDB2との接続でERRORCODE=-4220が発生することがあります。
その場合はIBM社の下記の情報をご参考にされてください。
[Db2] Java 8 に移行すると、JDBC アプリケーションがエラー -4220 で失敗することがある
上記によりますと、まずドライバーのJava 8対応についての説明があります。該当する場合はドライバーのバージョンアップをお試しください。また後半にはオプションを指定して対応する方法の説明があります。ASTERIAではフローサービス管理コンソールの「設定」-「サービス」-「フロー」-「起動」画面の「その他のオプション」で下記を指定してください。
-Ddb2.jcc.charsetDecoderEncoder=3
📝 NOTE
既に設定されている起動オプションにスペースで区切って追加してください。
Q12Amazon RDSへ接続するためにアダプターは必要ですか?
A
Amazon Relational Database Service (Amazon RDS)への接続はAmazon Web Services アダプターで提供されるコンポーネントは必要ありません。 オンプレミスのデータベースと同様にRDBコネクションを作成し、RDBGet、RDBPut、SQLCallコンポーネントなどを使用して接続できます。
📝 NOTE
SQLCallコンポーネントは、ASTERIA Warp Core/Core+/Core++ エディションではお使いいただけません。
Q13コネクションの設定内容を変更した場合に参照しているフローの再コンパイルは必要ですか?
A
コネクションの名前を変更せずに設定内容のみを変更した場合には当該コネクションを参照しているプロジェクトを再コンパイルする必要はありません。
コネクションの設定内容を変更した後は、接続テストを実施して正常に接続できるか確認してください。
Q14バージョン4.9以降でSQL ServerにODBC接続すると「No Suitable driver found for jdbc:odbc」というエラーになります
A
ASTERIA Warp4.9以降で使用しているJDK 8では、これまで付属していたJDBC-ODBCブリッジがJDKに付属しなくなりました。今後ASTERIA WarpでJDBC-ODBC接続への対応予定はありません。
SQL ServerにODBC接続するコネクションでは「No Suitable driver found for jdbc:odbc」というエラーになります。バージョン4.9以降ではJDBCドライバーを使用してください。
FAQ「SQL Server 2008にJDBC接続する接続テストでエラーになります」を参考に適切なドライバーを選択してください。
参考:Oracle Java SE 8 互換性ガイド(日本語)(抜粋)
📝 NOTE
概要 JDBC-ODBCブリッジが削除されました。説明 JDK 8以降、JDBC-ODBCブリッジがJDKに付属しなくなりました。JDBC-ODBCブリッジはこれまで常にサポート対象外の暫定的な製品と見なされてきており、一部のJDKバンドルでのみ提供され、JREには含まれていませんでした。JDBC-ODBCブリッジの代わりに、データベース・ベンダーが提供するJDBCドライバか、商用JDBCドライバを使用してください。
Q15コネクションプールとは何ですか?
A
コネクションプールとは、フロー実行終了時に使用したデータベースのコネクションをプールに保存しておいて、次のフロー実行時に再利用する機能です。再利用によりデータベースへの接続が短縮されます。
📝 NOTE
現状、コネクションプールの設定はRDBにしかありません。
フローサービスでコネクションをプールするように設定するには、コネクション設定で定義します。
コネクションプールを有効にする設定
- 管理コンソール: 「設定」-「コネクション」-「RDB」画面で、各コネクション設定の「コネクションプール」項目で「ON」を選択します。
- フローデザイナー: コネクションペインで作成する各コネクション設定で「コネクションをプール」プロパティで「はい」を選択します。
コネクションプールの動作
- プールは、コネクション設定ごとに存在し、デフォルトでは20個までプールされます
- それぞれのコネクションのプール個数(プールサイズ)を設定することはできません
- プールにコネクションがあればそれを利用し、なければ新たにコネクションを作成します
- そのコネクション設定を利用するフローが複数同時に実行された場合は、その実行数だけコネクションが確立されて使い終わるとプールに戻されます
- プールに戻されるとき、プールが最大数に達していた場合はそのコネクションが切断、破棄されます
- DBへの最大同時接続数は基本的にプールサイズではなくフローの同時実行数とお考えください
- フローの実行数が増加してプールサイズを超えた場合にはプールされたコネクションは全て再利用されます
プールされた個別のコネクションを解放するタイミング
- 一定回数再利用された場合(デフォルトは100回)
- 一定時間再利用されなかった場合(デフォルトは7200秒)
- そのコネクションを使用したフローが異常終了した場合
コネクションプールのプールサイズ、再利用回数、タイムアウトは、管理コンソールの「設定」-「サービス」-「フロー」画面の「フローエンジン設定」で変更することができます。
Q16RDBコネクションプールをクリアする方法を教えてください
A
RDBコネクションプールをクリアするには、次の3つの方法があります。
- 管理コンソールで「ツール」-「サービス」-「FlowService」画面の「データベース接続プール」項目で「クリア」をクリックする
- flow-ctrlの「clear connection-pool」を使用する
- フローサービスAPIの「cache」モジュールの「clear」機能を使用する
個別クリアの可否
コネクションプールのクリア操作はフローサービスすべてのコネクションが対象になり、コネクションごと、ユーザーごとに個別に実施することはできません。
プールされた個別のコネクションを解放するタイミングについてはFAQ「コネクションプールとは何ですか?」を参照してください。
Q17コネクションプールのサイズを変更するとメモリの消費量は大きくなりますか?
A
フローサービスで管理するコネクションプールのサイズは、プールに保持する接続の最大数を指定するだけなのでそれだけでメモリを大きく確保することはありません。ただし、RDBMSに対して接続したままのコネクションが増える可能性があるので、RDBMS側で接続数などの見直しが必要になることがあります。
コネクションプールについて詳しくはFAQ「コネクションプールとは何ですか?」を参照してください。
Q18コネクションプールの使用状況を確認することはできますか?
A
flow-ctrlの"list connection-pool"コマンドで、コネクションプールにキャッシュされているコネクションの一覧を確認することができます。実行手順は次のとおりです。
実行手順
- flow-ctrl(.bat)を実行する
- ASTERIA Warp 1610以降:
[INSTALL_DIR]/server/bin/flow-ctrl(.bat) - ASTERIA Warp 4.9.1以前:
[INSTALL_DIR]/flow/bin/flow-ctrl(.bat)
- ASTERIA Warp 1610以降:
- ユーザー名とパスワードを入力する
- 下記コマンドを実行する
list connection-pool
結果は下記のように表示されます。
ーーーーーーーーーーーーーーーーーーーーー
user RDB RDB1 1 2018-06-26T17:17:25
ーーーーーーーーーーーーーーーーーーーーー
左から、オーナー種別(system or user)、コネクション種別、コネクション名、使用回数、最終使用日時がリストされます。 詳しくは、flow-ctrl コマンドリファレンスを参照して下さい。
Q19コネクションプールを利用するとエラーになります
A
RDBとの連携でコネクションプールを利用している場合、以下のようなエラーが発生することがあります。
Communications link failure. (Connection reset)
The connection does not exist.
コネクションプールを利用するとフロー終了後もコネクションが保持されます。そのあとにフローがリクエストされた場合、プールにコネクションがあればそれを利用し、プールになければ新たにコネクションを作成します。しかし、何らかの理由によってプールされたコネクションが解放される前にこのコネクションが強制的に切断されていた場合、そのプールされたコネクションを利用しようとした最初のフローで上記エラーが発生します。 理由としては、以下のものが挙げられます。
- データベースサーバーの再起動などにより、接続が切断された
- ファイアウォールが一定時間通信のないコネクションを強制的に切断した
- ネットワークの障害や不安定さにより、接続が切断された
そのコネクションを使用したフローが異常終了した場合、コネクションは解放されるため後続のフローでエラーは発生しません。
対処方法
エラーが発生した時の対処方法
エラーが発生した時、下記の対処方法があります。
フローの再実行
一時的な通信切断が原因の場合、フローの再実行で解消されることがあります。
コネクションプールのクリア
フローサービス管理コンソールの「データベース接続プールのクリア」機能でコネクションプールをクリアします。この操作により、プールされた無効なコネクションがすべて破棄され、次回のフロー実行時に新しいコネクションが作成されます。特に、データベースの再起動後には有効な対応となります。
下記ドキュメントをご参照ください。
エラーが頻発する場合の対処方法
エラーが頻発する場合、下記の対処方法があります。
コネクションプールを使用しない
コネクション設定でコネクションプールしないように設定を変更します。ただし、コネクション設定でコネクションプールしないようにした場合、フロー実行時にコネクションを作成する処理が増え、頻度が高い場合には処理時間などに影響を与える可能性があります。コネクションプールを使用する・使用しないのそれぞれの状態での処理時間の差異について、事前にご確認ください。
フローサービス管理コンソールでは、「設定」-「コネクション」-「RDB」画面で、各コネクション設定の「コネクションプール」項目で「OFF」を選択します。
フローデザイナーでは、コネクションペインで作成する各コネクション設定で「コネクションをプール」プロパティで「いいえ」を選択します。
コネクションプールのタイムアウト時間の短縮
管理コンソールの設定で、コネクションプールのタイムアウト時間を変更できます。初期値は7200秒です。
接続の実行頻度等の利用状況に依存するため、弊社として推奨値のご案内は行っておりません。加えて、タイムアウト値を極端に短く設定した場合は、その時間帯は処理が実行されない状態となり、結果としてコネクションプールを無効化した場合と同様の挙動となる可能性があるため効果は限定される可能性があります。設定値については、事前に動作検証を行うことを推奨いたします。
フローサービス管理コンソールの「設定」-「サービス」-「フロー」画面の「フローエンジン設定」の「コネクションプールタイムアウト」項目で変更します。
エラー処理フローでのフロー再実行
一時的な通信切断への対策として、エラー発生時に、エラー処理フローで対象フローを再実行する対応もご検討ください。
Q20あるユーザーのユーザーコネクションを別ユーザーにコピーすることはできますか?
A
コピーすることはできません。ユーザーコネクションは管理コンソールまたはフローデザイナーから同じ内容で作成してください。
また、複数のユーザーで使うコネクションは、システムコネクションとして作成してシステムで共通して使う方法もあります。
Q21SQL Serverのコネクション設定でデータベース名を指定できますか?
A
次のようにRDBコネクションのURLで指定が可能です。
jdbc:sqlserver://[ホスト名]:[ポート番号];SELECTMETHOD=cursor;databaseName=[データベース名]
Q22SQL ServerからDATE型で取得した日付が間違っています
A
SQL ServerからDATE型で取得した日付が2日前など不適切な日付になることがあります。これはMicrosoft SQL Server JDBC ドライバーのバージョン 3.0とASTERIA Warpのバージョンの組合せによる問題です。
Microsoft SQL Server JDBC ドライバーのバージョン 4.0以降をお使いください。 詳しくはマイクロソフトのサイトを参照ください。 Microsoft サポート - SQL Server JDBC ドライバーの DATE 型の問題
Q23SQL Server 2008にJDBC接続する接続テストでエラーになります
A
SQL Server 2008以降に接続する際に使用するMicrosoft SQL Server JDBC Driver Version 2.0以降には、sqljdbc.jarとsqljdbc4.jarという2つのクラスライブラリファイルが用意されていますが、ASTERIA Warpではsqljdbc4.jarを使用してください。 また、コネクション設定の「データベースタイプ」は「SQL Server」を選択してください。
💡 HINT
同じタイプのドライバーが複数あると最初に見つかったもののみを読み込んで使用するため、JDBCドライバーを配置するフォルダにsqljdbc.jarとsqljdbc4.jarの2つを置くとsqljdbc.jarが読み込まれます。sqljdbc4.jarのみ配置してください。 ダウンロードしたJDBCドライバーの説明をよく読み必要なものを配置してください。
参考URL: Microsoft TechNet - Microsoft SQL Server JDBC ドライバーのダウンロード
合わせて、次のFAQも参考にしてください。
Q24SQL ServerのExpress Editionに接続することはできますか?
A
SQL Serverは各バージョンで無償のExpress Editionが提供されていますが、ASTERIA Warpからは他のEditionと同様に接続することができます。
ただし、使用形態や使用可能なデータベースサイズ、プロセッサ数などはバージョンやEditionによって異なりますのでご注意ください。詳しくはマイクロソフト社のサイトを参照ください。
Q25フローでRDBエラーになった場合RDBコネクションはコネクションプールに戻されますか?
A
エラー処理フローを設定していない場合、つまりコンポーネントの「エラー処理」プロパティが「(なし)」で、かつフローの「汎用エラー処理」プロパティが「(なし)」の場合はフローが異常終了となるため、RDBコネクションはプールに戻されません。
エラー処理フローを設定している場合、つまり、コンポーネントの「エラー処理」プロパティまたはフローの「汎用エラー処理」プロパティにエラー発生時に実行するフローを設定している場合は、エラー処理フローに処理が移ってフローは正常に処理されていると扱われます。したがって、RDBコネクションはコネクションプールに戻されます。
コネクションプールについては、フローサービスマニュアルの「はじめに」-「フローの構成要素」-「コネクション」を参照してください。
Q26RDBコネクションで自動コミットを有効にすることはできますか?
A
RDBコネクションで自動コミットを有効にするには、RDBコネクションの「URL」プロパティに設定するJDBC URLパラメータに「asteria_autocommit=TRUE」を追加します。以下に例を示します。
jdbc:oracle:thin:@oracleserver:1521:ORCL;asteria_autocommit=TRUE
⚠️ CAUTION
この場合、ASTERIA Warpのトランザクション管理は使用できなくなりますので、使う場合は十分注意してください。
Q27RDBコネクションでトランザクション分離レベルを指定できますか?
A
指定できません。
実行時にASTERIA Warpがコネクションに対してトランザクション分離レベルを指定することはありませんので、実際のトランザクション分離レベルはデータベースサーバーおよびJDBCドライバーの実装に依存します。
Q28RDBコンポーネントにタイムアウトを設定しましたが時間が経ってもタイムアウトしません
A
RDBコンポーネントの「タイムアウト」プロパティで設定した時間を経過しても、RDBへの接続がタイムアウトしなかったりタイムアウトまでの時間が長くなったりすることがあります。ASTERIA Warpでは指定された時間をJDBCのjava.sql.StatementクラスのsetQueryTimeout()に設定していますが、この扱いはRDBによって実装や解釈が異なるためです。
「タイムアウト」プロパティに値を設定しない(ブランク)ときはsetQueryTimeoutを実行せず、動作はJDBCドライバーの実装に依存することになります。詳しくはRDBのベンダーにお問い合わせください。
Q291台のASTERIA Warpから異なるバージョンのデータベースに接続することはできますか?
A
できます。
ただし、複数のJDBCドライバーを利用することはできませんのでご注意ください。例えば、Oracle 10gとOracle 11gの両方に接続したい場合は、両方のバージョンに正しく接続できるバージョンのJDBCドライバーが必要です。
Q30ユーザーコネクションとシステムコネクションの違いについて教えてください
A
フローサービスのコネクションにはユーザーコネクションとシステムコネクションの2種類があります。
-
システムコネクション システム上のすべてのユーザーが使用できます。 フローサービス管理コンソールでしか作成・変更できません。
-
ユーザーコネクション 作成したユーザーのみが使用できます。 フローサービス管理コンソールおよびフローデザイナーで作成・変更できます。
同じ名前のコネクションがユーザーコネクションとシステムコネクションにある場合、ユーザーコネクションが使用されます。
システムコネクションに本番用のコネクション、ユーザーコネクションに同名のテスト用のコネクションを定義しておくと、開発時はテスト用のユーザーコネクションで確認し、本番前にそのユーザーコネクションを削除することで本番時はシステムコネクションが使用されることになり、コネクションを簡単に切り替えることができます。
💡 HINT
システムコネクションと同じ名前のユーザーコネクションはフローサービス管理コンソール(FSMC)から作成してください。
Q3164bit版のASTERIA WarpでデータベースにODBC接続するとエラーになります
A
64bit版のODBCドライバーとJava標準のODBCブリッジとの間では正しく動作しないことがあるようです。(Microsoft SQL Server用のODBCドライバーで動作しなかった実績があります。) 64bit版のODBCドライバーで動作しない場合は、最新のODBCドライバーに更新したりJDBCドライバーによる接続も試したりするなど検討してください。
⚠️ CAUTION
バージョン4.9以降ではODBC接続を行うことができません。 詳細: ASTERIA サポートサイト - バージョン4.9以降のODBC接続について
Q32ASTERIA WarpからSQL ServerへODBC接続を行うときの制限事項は?
A
次のデータ型への接続が制限されます。
NCHAR
NTEXT
NVARCHAR
その他のデータ型については、JDBC Type4接続と同様です。
⚠️ CAUTION
バージョン4.9以降ではODBC接続を行うことができません。 詳細: ASTERIA サポートサイト - バージョン4.9以降のODBC接続について
Q33AS/400へのJDBC接続でポート番号を指定できますか?
A
RDBコネクション設定の「データベースタイプ」プロパティで「DB2(iSeries)」を選ぶと、「URL」プロパティには以下のテンプレート文字列が表示されます。
jdbc:as400://[ホスト名]/[ライブラリ名]
通常、ポート番号を指定する必要はありません。ホスト名とライブラリ名のみを指定してください。
このURLやポートについては、AS/400と利用するJDBCライブラリの仕様によって変更される可能性があります。JDBCドライバーの使い方の詳細は日本IBMやJDBCドライバー提供元に問い合わせてください。
Q34ASTERIA WarpからSQL ServerにWindows認証で接続するには?
A
次の手順で行います。
💡 HINT
JDBCドライバーはできるだけ最新のものを利用してください。
- Microsoft SQL ServerのJDBCドライバーをダウンロードする
-
JDBCドライバーに含まれているsqljdbc_auth.dllをWindowsのシステムフォルダに配置する。sqljdbc_auth.dllファイルは次の場所にインストールされています。
[インストールフォルダ]\sqljdbc_[バージョン]\[言語]\auth\ -
SQL Serverが動作しているサーバー上に、ASTERIA Warpを起動するユーザーと同じ名前、同じパスワードのWindowsユーザーを作成する
- SQL Serverのログインユーザーに上記ユーザーを追加し、権限を設定する
コネクション設定
| 項目 | 設定値 |
|---|---|
| ドライバー | com.microsoft.sqlserver.jdbc.SQLServerDriver |
| URL | jdbc:sqlserver://[サーバー名]:[ポート番号];integratedSecurity=true;SELECTMETHOD=cursor |
| ユーザー名 | なし |
| パスワード | なし |
Q35トランザクション化したフローで複数のコネクションのうち1つのコミットに失敗した場合はどうなりますか?
A
フローをトランザクション化している場合、フローの終了時に使用されたRDBコネクションのコミットが順に実行されます。
💡 HINT
フローのトランザクション化とは、Startコンポーネントの「トランザクション化」プロパティが「はい」になっている状態をいいます。
1つのフローの中でコネクションAとコネクションBを使って処理を行った場合、コネクションA、コネクションBの順にコミットが実行されます。このとき、コネクションAのコミットが成功した後にコネクションBのコミットが失敗すると、すでにコネクションAのコミットは成功しているのでコネクションAに対してはロールバックされません。
接続先のRDBが分散トランザクションをサポートしている場合、RDBのコネクション設定で「XA対応」プロパティを「はい」にすると分散トランザクションを利用することができ、このようなリスクを軽減することができます。
トランザクションの詳細については「フローサービスマニュアル」の「はじめに」-「詳細なトピック」-「フローの構成要素」-「トランザクション」を参照してください。
Q36OracleのDATE型の値を取得すると時分秒の値が"00:00:00"となってしまいます
A
この現象はOracleのJDBCドライバーの仕様がバージョンによって異なるために発生します。Oracleでは9i以降のバージョンで新たに「TIMESTAMP型」というデータ型が導入され、これに伴いJDBCドライバーでの従来のDATE型の扱いが変更されました。
具体的にはJDBCのDATE型を取得するAPIで、Oracle側でDATE型として定義されているカラムの情報を取得した場合、8i以前のJDBCドライバーではjava.sql.Types.TIMESTAMPが返されていたのに対し、9i,10gのJDBCドライバーではjava.sql.Types.DATEが返されるようになっています。さらに、11gのJDBCドライバーでは再びjava.sql.Types.TIMESTAMPが返されるようになりました。
RDBGetコンポーネントではカラム情報として返されるデータ型によって、値をDateとして取得するか、Timestampとして取得するかの動作が変わるため、9i,10gのJDBCドライバーを使用した場合、OracleのDATE型のカラムの値がjava.sql.Dateとして取得されます。(時刻情報が欠落します。)
次のいずれかの方法で回避することができます。
- Oracle側のカラム定義をTIMESTAMP型で行う 新規で作成するテーブルではこの方法を推奨します。
- Oracle 11g以降のバージョンのJDBCドライバーを使用する 使用しているOracleが11g以降のJDBCドライバーに対応しているのであれば、11g以降のJDBCドライバーを使うことでDATE型をTimestampとして扱うことができます。
- SQLCallコンポーネントでデータ型をTimestampと明示する RDBPutコンポーネントの代わりにSQLCallコンポーネントを使用した場合、SQLパラメータのデータ型をTIMESTAMP型と明示することができます。
📝 NOTE
SQLCallコンポーネントは、ASTERIA Warp Core/Core+/Core++ エディションではお使いいただけません。
Q37SQL Server 2005以降でテーブル一覧が表示されません
A
Microsoft SQL Server 2005以降では「ログイン(ログインユーザー)」と「ユーザー(データベースユーザー)」という2つの概念があり、データベースとコネクションの設定によってはSQLビルダーなどでテーブル一覧が表示されない場合があります。
以下の方法で対応してください。
- コネクションの「使用するスキーマ」に該当のスキーマ名を設定する
- データベース名を明示的に指定する データベース名を指定する方法については以下の記事を合わせてご参考ください。 SQL Serverのコネクション設定でデータベース名を指定できますか?
- データベースの接続プールをクリアする 管理コンソールのメニューから「ツール」-「サービス」-「FlowService」画面の「データベース接続プール」項目で「クリア」をクリックします。 (バージョン4.7.1以前では「ツール」-「サービス」-「フロー」画面の「データベース接続プールのクリア」項目で「実行」をクリック)
Q38RDBコンポーネントで「ソケットから読み込むデータはこれ以上ありません」というメッセージが出力されます
A
このメッセージはコネクション設定を使用するコンポーネントでソケットが切断された場合に出力されることがあり、主に2つのケースが考えられます。
(1)意図的に接続先のデータベースを再起動したとき
データベースを再起動するときにはASTERIA Warpも再起動するようにしてください。このとき、ASTERIA Warpを停止し、データベース再起動してからASTERIA Warpを起動してください。 ASTERIA Warpを再起動することが難しい状況の場合、コネクションプールをクリアを行ってください。手順については、FAQ「RDBコネクションプールをクリアする方法を教えてください」を参照してください。
📝 NOTE
操作時に該当コネクションを使用するフローが残っているような状況では、結果的にクリアできない場合があります。
(2)使用しなくなったコネクションがタイムアウトになりクローズしようとしたが、DB側の都合により強制的に切断されたとき
長時間コネクションが保持されますのでコネクションプールを使用している時に発生しやすいことがあります。また、使用されなくなったコネクションがタイムアウトになりクローズしようとしたが、DB側での障害による切断またはASTERIA WarpとDBとのネットワーク障害によりコネクションが強制的に切断された場合に発生することがあります。
DB側の負荷が上がったことに伴いネットワーク接続が切断してしまうようなことはなかったか、ファイアウォールやセキュリティソフトの影響で接続が切れることなかったかなど、DB側のログや設定等にてコネクションを切断していないか確認してください。
Q39RDBコンポーネントで「Socket read timed out」というメッセージが出力されます
A
このエラーメッセージは、RDBとの通信でタイムアウトした場合に発生することがあります。原因として以下のようなことが考えられます。
- RDBとのネットワーク上に障害がある
- RDB側の負荷が重くなって反応が悪くなっている
現象発生時の接続先DB側の負荷の状況やネットワーク接続の状況等を確認してください。
Q40RDBに接続しようとすると「クローズされた接続です。」というエラーになることがあります
A
RDBに接続しようとすると「クローズされた接続です。」というエラーになることがあります。これはコネクションプールを利用した場合に、コネクションプールにコネクションが格納されている間にRDBサーバーが再起動されるなどして接続が切れてしまった場合などが考えられます。
通常であれば、ASTERIA Warpはコネクションを利用する前にJDBCドライバーの機能を使用してコネクションが利用できる状態かどうかを確認しますが、JDBCドライバーなどではこの機能がサポートされていないこともあり、そのような場合に上記のようなエラーが発生することがあります。
このエラーが一度発生するとコネクションプールがクリアされて、以降の接続でRDBサーバーに再接続するので正常に処理できるようになります。
また、FAQ「コネクションプールを利用するとエラーになります」もあわせて参考にしてください。
Q41RDBGetコンポーネントで集約関数を使用すると「ORA-00972: 識別子が長すぎます」というエラーになります
A
RDBGetコンポーネントで集約関数を使用すると、SELECT文で「<関数名>_<カラム名>」という別名が付けられます。このため、長いカラム名に集約関数を使用すると別名の長さがデータベースの制限を超えてしまうことがあります。Oracleの場合、タイトルのようなエラーになります。
このエラーを防ぐには、元のカラム名を短くするか、SQLビルダーで生成されるSQL文を編集して別名を短くするなどの対応が必要です。
Q42RDBGetコンポーネントでループを開始する場合にSQLを発行するのは何回ですか?
A
RDBGetコンポーネントで「ループ開始」プロパティが「はい」の場合でもSQLを発行するのは1回です。
SQLを発行したら、フェッチサイズ分ずつレコードを取得して「ループ時に取出す件数」分のレコードを取得した状態でストリームを作成します。
例えば、SQLの発行で条件に適合するレコードが1万件あり、1000件ずつに分けて処理するために「ループ時に取出す件数」プロパティに「1000」と指定している場合、RDBGetコンポーネントでは1回のSQLの発行後、フェッチサイズ分ずつレコードを取得してメモリ上に保持し、1000件のレコードが取得されたらストリームを作成して出力します。
Q43RDBGetコンポーネントでMySQLを検索すると処理中にメモリ不足になります
A
MySQLのJDBCドライバーはデフォルトですべてのレコードをクライアント側に取得するため、メモリ不足になりやすい傾向があります。
RDBGetコンポーネントでは、JDBCのsetFetchSizeに値をセットできるプロパティを実装し、RDB処理の高速化とメモリ使用量削減に対応していますのでプロパティでの調整を検討してください。
注意点
- JDBCドライバーの機能は将来のバージョンで変更される可能性がありますので、詳しくはJDBCのドキュメントを参照してください。
- defaultFetchSizeに設定する値についてはパフォーマンスやメモリ使用状況などを確認しながらチューニングしてください。
上記の対応でもまだメモリ不足が発生する場合は、ドキュメント「フローサービスでのメモリ不足について」を参照し、メモリサイズやフローのチューニングを検討してください。
また、MySQL以外のDBで発生する場合は各DBのJDBCドライバーのドキュメントを参考にして設定してください。
Q44RDBPutコンポーネントで「キーにする項目」にNULLを指定することは出来ますか?
A
「キーにする項目」にNULLを指定することは出来ません。
SQLでは項目がNULLであるかどうかを判定するためには「項目名 IS NULL」という条件式を指定する必要がありますが、RDBPutコンポーネントではこのような条件式を指定することが出来ません。
このような場合、SQLCallコンポーネントを使用し、「項目名 IS NULL」の条件をWhere句に付加するようなSQLを作成して「SQL文」プロパティに指定してください。
例) DELETE FROM TestTable1 WHERE item1 IS NULL
📝 NOTE
SQLCallコンポーネントは、ASTERIA Warp Core/Core+/Core++ エディションではお使いいただけません。
Q45RDBPutコンポーネントで「Function does not supported.」というエラーになります
A
RDBPutコンポーネントの「バッチ処理件数」プロパティで、バッチ処理で一度に送信するレコード件数が設定できます。接続先データベースやJDBCドライバーがバッチ処理に対応していない場合、「バッチ処理件数」プロパティに2以上の値(初期値100の場合も含む)を設定したときに上記のメッセージが出力されることがあります。
このメッセージが出力された場合はRDBPutコンポーネントの「バッチ処理件数」プロパティに1を設定するか、またはSQLCallコンポーネントを使用してください。
📝 NOTE
SQLCallコンポーネントは、ASTERIA Warp Core/Core+/Core++ エディションではお使いいただけません。
Q46フローでSQLのMERGEに相当する処理を行うことはできますか?
A
RDBMergeコンポーネントはSQLのMERGE文を使用してRDBのレコードへデータをマージします。
詳しくはRDBMergeコンポーネントのヘルプを参照ください。
📝 NOTE
RDBMergeコンポーネントは、ASTERIA Warp Core/Core+/Core++ エディションではお使いいただけません。
Q47SQLCallコンポーネントで複数のSQL文を実行できますか?
A
SQLCallコンポーネントでは、1つのSQL文のみ実行可能です。複数のSQL文を実行するとエラーになります。
複数のSQL文を実行するには、データベース側で複数のSQL文を実行するストアードプロシージャなどを作成し、そのストアードプロシージャをSQLCallコンポーネントで実行してください。
📝 NOTE
SQLCallコンポーネントは、ASTERIA Warp Core/Core+/Core++ エディションではお使いいただけません。
Q48SQLCallコンポーネントでcommitやrollbackは使えますか?
A
ASTERIA Warpではフローエンジン内でトランザクションを制御していますので、SQLCallコンポーネントでトランザクションを制御するcommitやrollbackを発行した場合は動作保証されません。
📝 NOTE
SQLCallコンポーネントは、ASTERIA Warp Core/Core+/Core++ エディションではお使いいただけません。
Q49SQLビルダーで作成するSQL文やSQLCallコンポーネントに入力できるSQL文の長さに制限はありますか?
A
SQL文の長さに制限はありません。パラメータを使用した場合も制限はありません。
📝 NOTE
SQLCallコンポーネントは、ASTERIA Warp Core/Core+/Core++ エディションではお使いいただけません。
Q50SQLビルダーで生成したSQL文の中でフロー変数を使用することはできますか?
A
RDBGetコンポーネントでは、SQLビルダー内のSQL文にフロー変数を直接記述することはできません。RDBGetコンポーネントの前にMapperコンポーネントを配置して、フロー変数をSQLビルダーのSQLパラメータにマッピングすることにより、SQL文にフロー変数の値を使うことができます。
詳しくはRDBGetコンポーネントのヘルプで「SQLビルダーの使い方」を参照してください。
Q51SQLビルダーでデフォルトスキーマを省略できません
A
SQL ServerまたはPostgreSQLの場合、SQLビルダーで「デフォルトスキーマを省略する」にチェックを入れた状態でも、SQLを反映させるとデフォルトスキーマが省略できない場合があります。
ASTERIA Warpでは接続ユーザー名をデフォルトスキーマとして使用していて、接続ユーザー名とテーブルのスキーマ名が同じ場合のみ、デフォルトスキーマ名の省略が可能となります。
接続ユーザー名と異なるデフォルトスキーマを省略したい場合は、SQLを常に同期しないよう設定し、SQL文を直接編集してください。
Q52SQLビルダー内のSQL文にコメントを入れるとエラーになります
A
SQLビルダー内はコメントに対応していません。
ただし、SQLビルダーを使用してSQL文を自動生成した後、そのSQL文をRDBGetコンポーネントの「SQL文」プロパティで編集する場合は、コメントを記述することができます。この場合に、再度編集するときには、SQLビルダーを起動しないで「SQL文」プロパティ内で編集するように注意してください。
📝 NOTE
SQLビルダーで自動生成したSQL文を編集した場合は、SQLビルダーが正しく対応できないことがあります。
Q53SQLビルダーでテーブル名が重複して表示されます
A
MySQLやDr.Sumのように「データベース名=スキーマ名」という扱いのデータベースではコネクション設定にデータベース名とスキーマ名を両方指定するとSQLビルダーのテーブル一覧でテーブル名が2つ重複して表示されることがあります。
このような場合は、コネクションの「使用するスキーマ」を指定しないでください。
Q54データベースへの接続時テーブル名やフィールド名に半角ハイフンを含むとエラーになります
A
テーブル名やフィールド名に半角ハイフン「-」を含むと、フローサービスのRDBGetコンポーネントでエラーが発生する場合があります。多くのデータベースでは、SQL文の中で「-」を含んだテーブル名やフィールド名を扱う場合、「"」で囲むルールがあるためです。
RDBGetコンポーネントで「-」を含むテーブル名、フィールド名を扱う場合、SQLビルダーの「名前を「"」で囲む」項目にチェックを入れてSQL文を作成するように対処してください。
Q55Oracleを使用していると「ORA-01000 最大オープン・カーソル数を超えました」と表示されました
A
フローサービスでコネクションプールを使用するように設定した状態でフロー中の多数のRDB系コンポーネントでOracleと接続している場合、オープンカーソルの最大値を超えて以下のようなエラーを出力することがあります。
ORA-01000 最大オープン・カーソル数を超えました。
次のいずれかの方法で対処してください。
コネクションプールを無効にする
コネクション設定でコネクションプールしないように設定します。フローの終了に合わせてカーソルがクローズされるため、カーソル不足の発生を抑えられます。
Oracleのオープンカーソル数の上限を拡張する
Oracleでオープンできるカーソル数の上限を拡張します。利用されるカーソル数の計算は以下のようになります。
「同じコネクションで同時実行されるフローの数」×「そのフロー内でコネクションを使用しているコンポーネントと関数の数」
📝 NOTE
作成したフロー1個に対する計算式です。同じコネクションを利用する異なるフローが同時に複数実行される場合は、フローごとに計算した合計となります。
Q56Oracleでストアドプロシージャーから結果セットを取得する方法を教えてください
A
結果セットを返すストアドプロシージャーを実行する場合には、SQLCallコンポーネントを使用し、「実行する処理」プロパティで「ストアド実行(結果あり)」を指定します。「SQL文」プロパティには次のようにストアドプロシージャーの呼出し方法を記述します。
{ ?RS? = call test(?P1?) }
{ call test2(?P1?, ?RS?) }
📝 NOTE
ストアドプロシージャーの実装によって呼出し方法は変わります
SQLパラメータの設定
上記のSQL文の中の RS は結果セットを受け取るためのSQLパラメータで、P1 はストアドプロシージャーに値を渡すためのSQLパラメータです。SQLパラメータはSQLCallコンポーネントの「SQLパラメータ」タブで定義します。結果セットを受け取るためのSQLパラメータでは、データ型を RESULTSET にする必要があります。
出力ストリームのフィールド定義
取得した結果セットを使用するために出力ストリームのフィールド定義を行います。出力ストリームのフィールド名は、取得した結果セットのフィールド名と同じにする必要はありません。結果セットの最初のフィールドの値が出力ストリームの最初のフィールドに設定され、結果セットの2番目のフィールドの値が出力ストリームの2番目のフィールドに設定され、というようにフィールドの順番に従って出力ストリームに値が設定されていきます。
コンポーネントプロパティ例
上記の1つ目の記法でSQL文を実行する場合の設定内容を示します。(P1 パラメータは省略します)
「基本」タブ
| プロパティ名 | 値 |
|---|---|
| 実行する処理 | ストアド実行(結果あり) |
| SQL文 | ?RS? = call <プロシージャ名> |
「SQLパラメータ」タブ
| フィールド名 | 入力/選択値 |
|---|---|
| パラメータ名 | RS |
| 入出力 | 出力 |
| データ型 | RESULTSET |
📝 NOTE
SQLCallコンポーネントは、ASTERIA Warp Core/Core+/Core++ エディションではお使いいただけません。
Q57Oracleを使用して取得した文字列が途中で切れてしまいます
A
次の条件にすべて当てはまる場合に、RDBGet/SQLCallコンポーネントで取得した文字列が途中で切れてしまうことがあります。
- RDBGet/SQLCallコンポーネントの「ループを開始する」プロパティが「いいえ」
- 使用するJDBCドライバーのバージョンがOracle 11g Release2以降の場合
下記の方法で現象を回避できます。
「JDBC Forward Onlyドライバー」項目に oracle.jdbc.OracleDriver を指定する
フローサービス管理コンソールの「設定」-「サービス」-「フロー」の「フローエンジン」画面の「JDBC Forward Onlyドライバー」項目で、フィールド内容の最後にセミコロン(;)で区切って oracle.jdbc.OracleDriver を追加して下さい。
変更前:
sun.jdbc.odbc.JdbcOdbcDriver;com.fujitsu.symfoware.jdbc.SYMDriver;
jp.co.dw_sapporo.JDBC.JDBCDriver
変更後:
sun.jdbc.odbc.JdbcOdbcDriver;com.fujitsu.symfoware.jdbc.SYMDriver;
jp.co.dw_sapporo.JDBC.JDBCDriver;oracle.jdbc.OracleDriver
更新後、必ずFlowServiceを再起動してください。
Q58Oracleに対してUpdateに失敗することがあります
A
OracleではCHAR型のフィールドに対して、最大文字数に満たない場合に文字列の後部を空白文字で埋められて書き込まれます。
例)最大文字数が4の場合
'ABC' → 'ABC ' として書き込まれる
しかしRDBPutでUpdateする場合など、キーフィールドの比較において空白で埋められることがないため、比較で一致せずに正しくUpdateできないことがあります。
例)
'ABC' と 'ABC ' が一致しない
対処方法
対象フィールド(CHAR型でキーになっている)については、ASTERIA側で空白を埋めてから渡します。RDBPutの前段MapperでLeft関数を使用して文字列後部に空白を埋めてください。
Q59PostgreSQLのmoney型を扱うことはできますか?
A
PostgreSQLのmoney型についてはASTERIA Warpで未対応ですが、下記の方法で動作確認を行いました。
データを取得する場合(RDBGet利用時)
発行するSQL文で該当フィールドを decimal 型に cast する方法です。
SELECT
cast ([money型のカラム] as decimal)
FROM [テーブル名]
RDBGetのストリームペインで該当フィールドのデータ型を Decimal と設定してデータを取得します。
データを登録する場合
SQLCallコンポーネントを利用して該当フィールドのSQLパラメータを DECIMAL 型で定義する方法です。
| 項目 | 設定値 |
|---|---|
| SQLパラメーター名 | money |
| SQLパラメーターデータ型 | DECIMAL |
| SQL文 | insert into test values (?money?) |
📝 NOTE
SQLCallコンポーネントは、ASTERIA Warp Core/Core+/Core++ エディションではお使いいただけません。
Q60PostgreSQLにアクセスすると「ポータル"C_2"は存在しません 」のエラーが発生します
A
PostgreSQLにアクセスする際に「ポータル"C_2"は存在しません 」のようなエラーが発生することがあります。
PostgreSQLにおけるポータル(カーソル)の動作が関係しており、RDBGetコンポーネントを起点としたループ中のRDBPutコンポーネントでコミットした時点でポータルもクローズされるため、次のループのRDBGetコンポーネントでポータルがないというエラーになるというものです。
下記解決方法のうちいずれか適したものを選択してください。
フローをトランザクション化する
フローをトランザクション化するとRDBPutコンポーネントでコミットは発生せず、トランザクション終了時(通常リクエスト終了時)にコミットされるようになりますので、結果的に回避されます。
📝 NOTE
ただしエラー等の発生時などに、ロールバックされ変更内容が反映されなくなりますのでご注意ください。
RDBGetコンポーネント、RDBPutコンポーネントそれぞれのDBコネクションを分別する
トランザクションはそれぞれ独立したものとなりますので、互いに影響することなく、回避されます。
RDBGetコンポーネントの「フェッチサイズ」を0にする
この場合、PostgreSQLはポータルを使用しない動作になるようですので、回避されます。
Q61フローサービスとDr.Sumを連携するときの制限事項は?
A
データベース利用、Dr.SumEA アダプター共通の制限事項
Windows版のASTERIA Warpのみ対応しています。動作環境表も参照してください。
動作環境表に記載のあるバージョンはデータベース利用およびDr.SumEA アダプター共通です。
データベースとして利用する場合の制限事項
- Dr.Sum EA Ver 2.xに接続する場合、RDBPutコンポーネントの「実行する処理」プロパティで「Update/Insert」は指定できません。
- OBJECT型は使用できません。
- コネクション設定の「コネクションをプール」プロパティを「はい」に指定しないでください。「はい」を指定して使用した場合、コネクションでタイムアウトが起きるとその後の処理がエラーになります。
- 同一コネクションを使用するRDB関連コンポーネントが1つのリクエスト内で複数配置した場合または各RDB関連コンポーネントの間に著しく時間がかかった場合、コネクションがタイムアウトしてエラーとなることがあります。コネクションのタイムアウト時間は、Dr.Sum本体のServer Settings(プロセスタイムアウト時間)により変更することができます。
- RDBPutコンポーネントの「バッチ処理件数」プロパティが「1」以外の場合に「Function does not supported.」というエラーが発生することがあります。ドライバーバージョンなどに依存する可能性もありますが、動作確認を実施して正常に動作しない場合は「バッチ処理件数」は「1」で利用してください。合わせてFAQ「RDBPutコンポーネントで「Function does not supported.」というエラーになります」も参照してください。
DrSumMdiコンポーネントの制限事項
出力には列のフィールド定義が必要です。列が可変になる場合には、検索条件などでフィールド数が固定になるように定義しておく必要があります。
Q62Amazon Redshift JDBC ドライバーを使うと「 [Amazon][JDBC](10220) ドライバが機能しません。」というエラーが発生します
A
Amazon Redshift JDBC ドライバーを使用してRDBGet/SQLCallコンポーネントを実行した際に今回のメッセージを含むエラーが出力される場合には、フローサービス管理コンソールの「設定」-「サービス」-「フロー」の「フローエンジン」画面の「JDBC Forward Onlyドライバー」項目で、フィールド内容の最後にセミコロン(;)で区切ってAmazon Redshift JDBC ドライバーを追加して回避できます。 変更前:
sun.jdbc.odbc.JdbcOdbcDriver;com.fujitsu.symfoware.jdbc.SYMDriver;
jp.co.dw_sapporo.JDBC.JDBCDriver;
変更後:
sun.jdbc.odbc.JdbcOdbcDriver;com.fujitsu.symfoware.jdbc.SYMDriver;
jp.co.dw_sapporo.JDBC.JDBCDriver;com.amazon.redshift.jdbc41.Driver
更新後、必ずFlowServiceを再起動してください。
Q63「javax.transaction.xa.XAException」というメッセージが出力されます
A
このエラーは、RDBコンポーネントで使用するRDBコネクションの設定が正しくない場合またはXA処理で例外が発生した場合に発生します。
RDBコネクションの設定が正しくない場合としては、RDBコネクションの「XA対応」プロパティが「はい」になっているが、RDBサーバー側がXAに対応していない、もしくはRDBサーバーでXA対応の設定が正しく行われていないことが原因として考えられます。XAを利用しない、またはRDBサーバーがXAに対応していない場合には、RDBコネクションの「XA対応」プロパティを「いいえ」に設定して動作を確認してください。
XA処理で例外が発生した場合には、エラーメッセージの内容をもとにRDBサーバーのドキュメントなどを確認してください。
