# DB2 V10.1アダプタ制限事項

- サポートする型
- テーブル読み取り処理
- 検索系SQL実行処理
- テーブル書き込み処理
- 更新系SQL実行処理
- ローダによる書き込み処理
- 主な例外

## サポートする型

本アダプタでサポートする型は以下の通りです。

型名 | サポート | 備考
--- | --- | ---
SMALLINT型 | ○ |
INTEGER型 | ○ |
BIGINT型 | ○ |
REAL型 | ○ |
DOUBLE型 | ○ |
DECIMAL型 | ○ |
DATE型 | ○ |
TIME型 | ○ |
TIMESTAMP型 | ○ |
CHAR型 | ○ |
CHAR FOR BIT DATA型 | △ |
VARCHAR型 | ○ |
VARCHAR FOR BIT DATA型 | △ |
LONG VARCHAR FOR BIT DATA型 | △ |
CLOB型 | ○ |
BLOB型 | △ |
GRAPHIC型 | ○ |
VARGRAPHIC型 | ○ |
LONGVARGRAPHIC型 | △ |
DBCLOB型 | △ |
XML型 | △ | Stringとしてデータを扱います。

- ○:サポートします。
- △:サポートしますが、制限事項があります。
- ×:サポートしません。

## テーブル読み取り処理

### 仕様制限

- テーブル名が引用符で囲われている場合、テーブル名の大文字小文字を区別します。

## 検索系SQL実行処理

### 仕様制限

ありません。

## テーブル書き込み処理

### 仕様制限

- CHAR型
  - データベース作成時のデフォルトのコードページが「UTF-8」になります。そのため、文字によっては文字列長が長くなるため、従来と処理結果が変わる可能性があります。たとえば、2バイトで定義されているカラムに"あ"を挿入する場合、3バイトとして扱われるためエラーになります。
- テーブル名が引用符で囲われている場合、テーブル名の大文字小文字を区別します。

## 更新系SQL実行処理

### 仕様制限

- CHAR型
  - データベース作成時のデフォルトのコードページが「UTF-8」になります。そのため、文字によっては文字列長が長くなるため、従来と処理結果が変わる可能性があります。たとえば、2バイトで定義されているカラムに"あ"を挿入する場合、3バイトとして扱われるためエラーになります。

## ローダによる書き込み処理

### 仕様制限

- CHAR型
  - データベース作成時のデフォルトのコードページが「UTF-8」になります。そのため、文字によっては文字列長が長くなるため、従来と処理結果が変わる可能性があります。たとえば、2バイトで定義されているカラムに"あ"を挿入する場合、3バイトとして扱われるためエラーになります。
- 以下の型はサポートしません。
  - LONG VARGRAPHIC型
  - DBCLOB型
  - BLOB型
  - CHAR FOR BIT DATA型
  - VARCHAR FOR BIT DATA型
  - LONG VARCHAR FOR BIT DATA型
  - XML型

### 注意事項

- データベースインスタンスのTCPサービス名の確認は、「DB2 GET DBM CONFIG」コマンドを実行し [TCP/IP サービス名(SVCENAME)] を参照してください。
- クライアントのノードディレクトリへの追加は、「DB2 CATALOG TCPIP NODE」コマンドを実行します。
  コマンドの詳細については、「CATALOG TCPIP NODEコマンド」(http://pic.dhe.ibm.com/infocenter/db2luw/v10r1/index.jsp?topic=%2Fcom.ibm.db2.luw.admin.cmd.doc%2Fdoc%2Fr0001944.html)を参照してください。

## 主な例外

例外名 | 原因 | 対策
--- | --- | ---
com.ibm.db2.jcc.am.SqlNonTransientConnectionException | 必須プロパティー "<ホスト名>" が不明なホストです。 ERRORCODE=-4222, SQLSTATE=08001 | データベースに接続できません。 | グローバルリソースの[ホスト名]を確認してください。
com.ibm.db2.jcc.am.DisconnectNonTransientConnectionException | 例外 java.net.ConnectException: サーバー /<ホスト名> へのソケットのオープンでエラーが発生しました。ポート: <ポート番号> メッセージ: Connection refused: connect ERRORCODE=-4499, SQLSTATE=08001 | グローバルリソースの[ポート番号]を確認してください。
com.ibm.db2.jcc.am.DisconnectNonTransientException | 会話の割り振り解除の原因となる分散プロトコル・エラーのため、実行が失敗しました。 DRDA データ・ストリーム構文エラーが検出されました。 理由: 0x3。 ERRORCODE=-4499, SQLSTATE=58009 | 接続先の環境を確認してください。
com.ibm.db2.jcc.am.DisconnectNonTransientConnectionException | 接続の基礎となるソケット、ソケット入力ストリーム、またはソケット出力ストリーム上での操作中に、 通信エラーが発生しました。 エラーのロケーション: Reply.fill() - socketInputStream.read (-1)。 メッセージ: Software caused connection abort: recv failed。 ERRORCODE=-4499, SQLSTATE=08001 | 存在しないデータベースを指定している可能性があります。 | グローバルリソースの[データベース名]で存在するデータベースを指定してください。
com.ibm.db2.jcc.am.SqlInvalidAuthorizationSpecException | 接続の許可が失敗しました。理由: ユーザー ID またはパスワードが無効です。 ERRORCODE=-4214, SQLSTATE=28000 | ユーザ名またはパスワードが不正です。 | グローバルリソースの[ユーザ名]または[パスワード]を確認してください。
com.ibm.db2.jcc.am.SqlSyntaxErrorException | DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=<テーブル名>, DRIVER=3.63.123 | テーブル名にスペースが挿入されている可能性があります。 | [テーブル名]で指定したテーブル名にスペースが挿入されている場合、テーブル名を引用符で囲ってください。
テーブルが存在しません。 | [テーブル名]で存在するテーブルを指定してください。