WebLogic Type 4 JDBC ドライバ ガイド
![]() |
![]() |
![]() |
![]() |
以下の節では、BEA WebLogic Type 4 JDBC SQL Server ドライバのコンフィグレーション方法と使用方法について説明します。
注意 : BEA WebLogic Type 4 JDBC MS SQL Server ドライバ (この章の主題) は、非推奨となった WebLogic jDriver for Microsoft SQL Server に置き換わるものです。新しいドライバは JDBC 3.0 に準拠しており、JDBC 2.0 拡張機能の一部をサポートし、パフォーマンスが向上しています。WebLogic jDriver for Microsoft SQL Server の代わりに、新しい BEA WebLogic Type 4 JDBC MS SQL Server ドライバを使用してください。
BEA WebLogic Type 4 JDBC MS SQL Server ドライバ (「SQL Server ドライバ」) は、以下のバージョンのデータベース管理システムをサポートします。
JTA を介して JDBC 分散トランザクションを使用するには、SQL Server のストアド プロシージャをインストールする必要があります。詳細については、「JTA 用ストアド プロシージャのインストール」を参照してください。
BEA WebLogic Type 4 JDBC MS SQL Server のドライバ クラスは次のとおりです。
XA : weblogic.jdbcx.sqlserver.SQLServerDataSource
非 XA : weblogic.jdbc.sqlserver.SQLServerDriver
Microsoft SQL Server データベースに接続するには、次の形式の URL を使用します。
jdbc:bea:sqlserver://
dbserver
:
port
Microsoft SQL Server では、SQL Server データベースの複数のインスタンスを同じサーバで同時に実行することができます。各インスタンスはインスタンス名で識別されます。
接続 URL を使用して名前付きのインスタンスに接続するには、次の形式で URL を指定します。
jdbc:bea:sqlserver://server_name\\instance_name
注意 : \\
instance_name
の最初のバックスラッシュ (\
) はエスケープ文字です。
server_name
は、サーバの IP アドレスまたはホスト名です。
instance_name
は、サーバ上の接続先インスタンスの名前です。
たとえば次の接続 URL を指定すると、server1 上の instance1 に接続されます。
jdbc:bea:sqlserver://server1\\instance1;User=test;Password=secret
表 5-1 に、SQL Server ドライバでサポートされる JDBC 接続プロパティを示し、各プロパティについて説明します。WebLogic Server ドメインの JDBC データ ソースのコンフィグレーションでこれらの接続プロパティを使用できます。プロパティを指定するには、JDBC データ ソースのコンフィグレーションで次の形式を使用します。
property=value
注意 : すべての接続文字列プロパティ名で、大文字と小文字は区別されません。たとえば、Password は password と同じです。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
表 5-2 に、SQL Server ドライバでサポートされる SQL Server 7 および SQL Server 2000 のデータ型と、対応する JDBC データ型を示します。
表 5-3 に、SQL Server 2000 のみでサポートされているその他のデータ型を示します。
データ型の詳細については、「getTypeInfo」を参照してください。
SQL Server ドライバでサポートされている SQL エスケープ シーケンスについては、「JDBC の SQL エスケープ シーケンス」を参照してください。
SQL Server ドライバは、トランザクション アイソレーション レベルとして Read Committed、Read Uncommitted、Repeatable Read、および Serializable をサポートしています。デフォルトは Read Committed です。
SQL Server ドライバは、スクロールセンシティブな結果セット、スクロールインセンシティブな結果セット、および更新可能な結果セットをサポートしています。
注意 : SQL Server ドライバが、要求された結果セットのタイプまたは同時実行性をサポートできない場合は、カーソルを自動的にダウングレードして詳細情報の入った SQLWarning を生成します。
ほとんどの場合、サーバサイドで更新可能なカーソルを使用すると速度が向上しますが、サーバサイドで更新可能なカーソルを、インセンシティブな結果セットまたは主キーを持たないセンシティブな結果セットと共に使用することはできません。デフォルトでは、MS SQL Server ドライバを使用すると、インセンシティブな結果セットおよび主キーを持たないセンシティブな結果セットを更新できます。更新可能な結果セットが要求される場合にサーバサイドでカーソルを使用するには、UseServerSideUpdatableCursors
プロパティを設定します。
UseServerSideUpdatableCursors
プロパティを true に設定している場合に、スクロールインセンシティブで更新可能な結果セットが要求されると、ドライバはそのリクエストをスクロールインセンシティブで読み込み専用の結果セットにダウングレードします。同様に、スクロールセンシティブで更新可能な結果セットが要求され、テーブルに主キーが含まれない場合、ドライバはそのリクエストをスクロールセンシティブで読み込み専用の結果セットにダウングレードします。いずれの場合も警告が生成されます。
サーバサイドで更新可能なカーソルを、主キーが含まれるセンシティブな結果セットで使用する場合、結果セットに対して行う変更は参照可能になります。ドライバのデフォルトの動作を使用すると、変更は参照可能になりません。
JTA で JDBC 分散トランザクションを使用するには、システム管理者が次の手順に従って、Microsoft SQL Server JDBC XA プロシージャをインストールする必要があります。この手順は、分散トランザクションに関与する MS SQL Server ごとに繰り返す必要があります。
注意 : インストールされている Microsoft SQL Server DBMS にパッチをインストールする場合、次の手順に従って JTA 用のストアド プロシージャを再インストールする必要があります。
また、WebLogic Server のサービス パックの中には、ドライバのアップデートが含まれているものがあり、JTA 用ストアド プロシージャの再インストールが必要になる場合があります (後述の説明を参照)。
WL_HOME
\server\lib
ディレクトリにある sqljdbc.dll
および instjdbc.sql
ファイルを、MS SQL Server データベース サーバの SQL_Server_Root
/bin
ディレクトリにコピーします。WL_HOME
は WebLogic Server がインストールされているディレクトリで、通常は c:\bea\weblogic81
です。注意 : 複数の Microsoft SQL Server インスタンスがあるデータベース サーバにストアド プロシージャをインストールする場合、実行中の各 SQL サーバ インスタンスが sqljdbc.dll
ファイルを見つけられる必要があります。そのため、sqljdbc.dll
ファイルはグローバル パスまたはアプリケーション固有のパス上に格納されている必要があります。アプリケーション固有のパスの場合は、各インスタンスの <drive>:\Program Files\Microsoft SQL Server\MSSQL$<Instance 1 Name>\Binn
ディレクトリに sqljdbc.dll
ファイルを配置します。
instjdbc.sql
スクリプトを実行します。システム管理者は、instjdbc.sql
を実行する前に、マスター データベースをバックアップする必要があります。コマンド プロンプトで、次の構文に従って instjdbc.sql
を実行します。
ISQL -Usa -Psa_password -Sserver_name -ilocation\instjdbc.sql
sa_password は、システム管理者のパスワードです。
server_name は、SQL Server のあるサーバ名です。
location は、instjdbc.sql
の絶対パスです (このスクリプトは、手順 1 で SQL_Server_Root
/bin
ディレクトリにコピーしたものです)。
instjdbc.sql
スクリプトを実行すると、多数のメッセージが表示されます。通常、これらのメッセージは無視できますが、実行エラーを示すメッセージがないかどうか確認してください。最後のメッセージは、instjdbc.sql
が正常に実行されたことを示すはずです。JDBC XA プロシージャを格納したり、既存のプロシージャの変更をログに記録したりするための容量がマスター データベースで不足していると、スクリプトは失敗します。
Microsoft SQL Server では Blob または Clob データ型は定義されていませんが、SQL Server ドライバによって、Blob および Clob 用に設計された JDBC メソッドを使用して長いデータ (特に LONGVARBINARY データおよび LONGVARCHAR データ) を取得および更新できます。これらのメソッドを使用して長いデータを Blob または Clob として更新すると、更新は Blob または Clob オブジェクト内のデータのローカル コピーに対して行われます。
Blob および Clob 用の JDBC メソッドを使用して長いデータを取得および更新すると、Blob および Clob を操作した場合と同じメリットが得られます。たとえば Blob および Clob を使用した場合、
Blob および Clob を使用した場合のこうしたメリットを得るには、データをキャッシュする必要があります。データをキャッシュするので、特に一度にデータの逐次読み出しを行う場合に、パフォーマンスが低下します。長いデータのサイズが使用可能なメモリよりも大きいと、パフォーマンスが著しく低下することがあります。
バッチ挿入およびバッチ更新用の SQL Server ドライバ実装は JDBC 3.0 に準拠しています。SQL Server ドライバは、バッチ挿入またはバッチ更新で文またはパラメータ セットのエラーを検出すると、BatchUpdateException を生成し、残りの文またはパラメータ セットのバッチ処理を続行します。BatchUpdateException 内の更新カウントの配列には、文またはパラメータごとに 1 つのエントリが含まれます。失敗した文またはパラメータ セットのエントリには、Statement.EXECUTE_FAILED 値が含まれます。
SQL Server ドライバは、以下の形式の SQL のパラメータ メタデータを返すことができます。
INSERT INTO foo VALUES (?, ?, ?)
INSERT INTO foo (col1, col2, col3) VALUES (?, ?, ?)
UPDATE foo SET col1=?, col2=?, col3=?WHERE col1
operator
?[{AND | OR} col2
operator
?]
ここで、operator
は SQL 演算子 (=
、<
、>
、<=
、>=
、または <>
) です。
SQL Server ドライバは自動生成キーの値の取得をサポートします。SQL Server ドライバから返される自動生成キーは、identity カラムの値です。
値を返す方法は、パラメータを含む Insert 文を使用しているかどうかによって異なります。
Statement.execute
および Statement.executeUpdate
メソッドがサポートされる。これらのメソッドは、ドライバに自動生成キーの値を返すよう通知するためのものです。Statement.execute (String sql, int autoGeneratedKeys)
Statement.executeUpdate (String sql, int autoGeneratedKeys)
Connection.prepareStatement
メソッドがサポートされる。このメソッドは、ドライバに自動生成キーの値を返すよう通知するためのものです。アプリケーションでは Statement.getGeneratedKeys()
メソッドを使用して、生成されたキーの値をドライバから取得します。
![]() ![]() |
![]() |
![]() |