Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)


3.6.7 SQL Serverと接続する場合の前提条件と注意事項

ここでは,SQL Serverと接続する場合の前提条件と注意事項について説明します。

〈この項の構成〉

(1) SQL Serverの場合の前提条件

SQL Serverの場合の前提条件について示します。

なお,SQL Serverと接続できるのはWindowsの場合だけです。

(2) SQL Serverと接続する場合の注意事項

ここでは,SQL Serverに接続する場合の注意事項について説明します。

(a) システムでの文字コード変換時の注意

SQL Server接続時,データベースに日本語文字コードを含むデータを格納する場合,システムでの文字コード変換について考慮する必要があります。ここでは,システムでの文字コード変換の概要と,文字化けを回避するために設定時に注意することについて説明します。

Javaでは日本語文字コードはUnicodeで表現されます。SQL Serverを使用する場合,Webクライアントとアプリケーションサーバ間,およびアプリケーションサーバとSQL Server間の処理で文字コード変換が実施されます。

SQL Serverを使用する場合の文字コード変換の概要を次の図に示します。

図3‒18 SQL Serverを使用する場合の文字コード変換の概要

[図データ]

図中の1.〜4.について説明します。

  1. アプリケーションサーバがWebクライアントからデータを受信する時に,外部文字コードからUnicodeに変換されます。

  2. アプリケーションサーバがデータをSQL Serverに格納する時に,Unicodeからデータベース格納文字コードに変換されます。

  3. SQL Serverに格納されたデータをアプリケーションサーバが取得する時に,データベース格納文字コードからUnicodeに変換されます。

  4. アプリケーションサーバがデータをWebクライアントに送信する時に,Unicodeから外部文字コードに変換されます。

SQL Serverを使用する場合,外部文字コードとデータベース格納文字コードの組み合わせや,文字コード変換を実施する場合に使用されるコンバータの種類によっては,文字化けなどの問題が発生することがあります。このような文字化けを回避するためには,文字コードの設定に注意する必要があります。

SQL Serverでは次の表に示す文字データ型をサポートしています。SQL Serverを使用する場合,Unicodeデータ型を使用することによって,文字コード変換時に発生する文字化けを防ぐことができます。

表3‒29 SQL Serverでサポートする文字データ型

カテゴリ

文字データ型

Unicodeデータ型

nchar,nvarchar,ntext

非Unicode文字データ型

char,varchar,text

次に,SQL Serverでのデータベース格納文字コードとして,Unicodeデータ型を使用する場合と,非Unicodeデータ型を使用する場合の文字コード変換について説明します。

Unicodeデータ型を使用する場合

DB ConnectorのプロパティのsendStringParametersAsUnicodeキーにtrue(デフォルト値)を設定している場合,文字化けは発生しません。falseを設定した場合,外部文字コードにShift_JIS,EUC-JP,ISO-2022-JP,またはUTF-8を使用すると文字化けが発生することがあります。

非Unicode文字データ型を使用する場合

外部文字コードの設定によって,文字化けが発生することがあります。

  • 外部文字コードにWindows-31Jを使用する場合

    文字化けは発生しません。

  • 外部文字コードにShift_JIS,EUC-JP,またはISO-2022-JPを使用する場合

    次に示す文字などで文字化けが発生します。

    [図データ]

  • 外部文字コードにUTF-8を使用する場合

    次に示す文字などで文字化けが発生します。

    [図データ]

(b) DB ConnectorのselectMethodプロパティ設定時の注意

DB ConnectorのselectMethodプロパティ(<config-property-name>の項目名)の値に「direct」を設定した場合の注意事項を次の表に示します。

表3‒30  DB ConnectorのselectMethodプロパティ設定時の注意事項

条件

注意事項

コネクションの障害検知機能が有効

コネクションに障害が発生していても正常であると誤診することがあります。その結果,ユーザアプリケーションプログラムに障害が発生したコネクションを返すことがあるので,コネクションの障害検知機能を使用しないでください。障害が発生したら,cjclearpoolコマンドを実行してください。

Statement,PreparedStatement,CallableStatementを複数同時に生成

SQL ServerのJDBCドライバによって,同時に生成したステートメントごとにSQL Serverへの接続が生成されます。

また,ステートメントプーリング機能を使用する場合には,プールされているステートメントごとに接続が生成され,メモリを多く消費するので注意してください。

(c) 認証モード

SQL Serverの認証モードは,混合モード(Windows認証とSQL Server認証)に設定してください。認証モードの詳細は,SQL Serverのマニュアルを参照してください。

(d) DB Connectorに設定できないプロパティ

次の設定は,DBConnector_SQLServer_CP.rarでは設定できません。

  • SQL Server JDBC Driver 2.0で新規に追加された設定

    • responseBuffering

    • encrypt

    • hostNameCertificate

    • trustServerCertificate

    • trustStore

    • trustStorePassword

  • SQL Server JDBC Driver 3.0で新規に追加された設定

    • sendTimeAsDatetime

  • JDBC Driver 4.0 for SQL Serverで新規に追加された設定

    • authenticationScheme

  • JDBC Driver 4.1 for SQL Server以降で新規に追加された設定

    • 新規に追加されたすべての設定

注※

responseBufferingのデフォルト値はadaptiveのため,アダプティブバッファリング機能は常に有効として動作します。詳細は,SQL Serverのマニュアルを参照してください。