3.6.7 SQL Serverと接続する場合の前提条件と注意事項
ここでは,SQL Serverと接続する場合の前提条件と注意事項について説明します。
(1) SQL Serverの場合の前提条件
SQL Serverの場合の前提条件について示します。
-
使用できるJDBCドライバ
使用できるJDBCドライバはSQL ServerのJDBCドライバとなります。
- 注
-
J2EEサーバのユーザクラスパスに複数のSQL Server JDBC DriverのJARファイルを指定することはできません。
-
接続方法
DBConnector_SQLServer_CP.rarを使用します。使用するRARファイルは,接続するSQL Serverによって異なります。
RARファイルごとに指定できるトランザクションサポートレベルを次の表に示します。
表3‒28 RARファイルごとに使用できるトランザクションサポートレベル(SQL Server) 使用するDB Connector
(RARファイル)
トランザクションサポートレベル
ライトトランザクション
有効
無効
DBConnector_SQLServer_CP.rar
NoTransaction
LocalTransaction
○
○
なお,SQL Serverと接続できるのはWindowsの場合だけです。
(2) SQL Serverと接続する場合の注意事項
ここでは,SQL Serverに接続する場合の注意事項について説明します。
(a) システムでの文字コード変換時の注意
SQL Server接続時,データベースに日本語文字コードを含むデータを格納する場合,システムでの文字コード変換について考慮する必要があります。ここでは,システムでの文字コード変換の概要と,文字化けを回避するために設定時に注意することについて説明します。
Javaでは日本語文字コードはUnicodeで表現されます。SQL Serverを使用する場合,Webクライアントとアプリケーションサーバ間,およびアプリケーションサーバとSQL Server間の処理で文字コード変換が実施されます。
SQL Serverを使用する場合の文字コード変換の概要を次の図に示します。
図中の1.〜4.について説明します。
-
アプリケーションサーバがWebクライアントからデータを受信する時に,外部文字コードからUnicodeに変換されます。
-
アプリケーションサーバがデータをSQL Serverに格納する時に,Unicodeからデータベース格納文字コードに変換されます。
-
SQL Serverに格納されたデータをアプリケーションサーバが取得する時に,データベース格納文字コードからUnicodeに変換されます。
-
アプリケーションサーバがデータをWebクライアントに送信する時に,Unicodeから外部文字コードに変換されます。
SQL Serverを使用する場合,外部文字コードとデータベース格納文字コードの組み合わせや,文字コード変換を実施する場合に使用されるコンバータの種類によっては,文字化けなどの問題が発生することがあります。このような文字化けを回避するためには,文字コードの設定に注意する必要があります。
SQL Serverでは次の表に示す文字データ型をサポートしています。SQL Serverを使用する場合,Unicodeデータ型を使用することによって,文字コード変換時に発生する文字化けを防ぐことができます。
カテゴリ |
文字データ型 |
---|---|
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」を設定した場合の注意事項を次の表に示します。
条件 |
注意事項 |
---|---|
コネクションの障害検知機能が有効 |
コネクションに障害が発生していても正常であると誤診することがあります。その結果,ユーザアプリケーションプログラムに障害が発生したコネクションを返すことがあるので,コネクションの障害検知機能を使用しないでください。障害が発生したら,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のマニュアルを参照してください。