...

[7] 外部データアクセス アドバンストSQL編 7-1.データリンク・マネージャー 7-2.OLE DBプロバイダー

by user

on
Category: Documents
54

views

Report

Comments

Transcript

[7] 外部データアクセス アドバンストSQL編 7-1.データリンク・マネージャー 7-2.OLE DBプロバイダー
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
アドバンストSQL編
[7] 外部データアクセス
お断り:当資料は、DB2 UDB V7.1(AIX,NT,OS2) をベースに作成されています。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
[7] 外部データアクセス
7-1.データリンク・マネージャー
7-2.OLE DBプロバイダー
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 1-2 )
<第1.00版>2001年2月
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
[7] 外部データアクセス
[7-1] データリンク・マネージャー
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
内容
1. データリンク・マネージャーとは?
2. データリンク・マネージャーの長所は?
3. データリンク・マネージャー・プログラミング・モデル
4. データリンク・マネージャーの構成要素
5. DATALINKデータタイプのオプション
6. データアクセス・トークン
7. データアクセス・トークンの例
8. データリンク・マネージャーのセットアップ(DLM側)
9. データリンク・マネージャーのセットアップ(UDB側)
10. リンクの作成
11. リンクファイルの更新
12. 考慮点
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 3-4 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
1. データリンク・マネージャーとは?
UDBの外部に格納されたファイルをあたかもデータベースの中に格納
されたオブジェクトのように扱えるするようにする製品
DATALINKデータタイプを指定し、列を定義
外部のファイルに対するアクセス・コントロール、バックアップ、リストア
をサポート
外部ファイルに対する参照保全をサポート
データ・リンク・マネージャーの標準化
はSQL3の一部としてANSI、
およびISOで審議中
UDBサーバー
データ・リンク・
マネージャー
表
DATA
LINK
外部ファイル
<URL>
<URL>
<URL>
......
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: 1. データリンク・マネージャーとは?
外部ファイルへの参照を、その内容を記述したメタ・データと一緒に保管するという事は、通常、SQLの検索機能と、生のデータを
持つファイルを直接扱う利点とを併せ持つアプリケーションによって用いられるアプローチです。
テキスト、音声、イメージ等などのUDB Relational Extenderは、この機能を提供しています。
これらExtenderは各オブジェクトの生のデータに関するメタ・データを保存し、それによってそれらオブジェクトの重要な局面を探求
する事ができます。
Extenderでは、オブジェクトがデータベースの中で、あるいは外のどちらで維持するかを指定する事ができます。
しかし、Extenderは、ファイル・サーバー上のファイル間の参照保全や、データベースでの参照を提供していません。
そのため、参照やファイルを別個に削除してしまう事もできます。
更に、Extenderは、関連するファイルのアクセス・コントロールや、データベースやファイルと連動したバックアップ/リストアも提供し
ていません。
UDBデータ・リンク・マネージャーは、これらの問題を解決し、これらのアプリケーションによって要求されていた機能を提供します。
これは、オブジェクトをポイントするDATALINKデータ・タイプと、UDBデータ・リンク・マネージャーのコンポーネントを含みます。
DATALINKデータ・タイプは、他のデータ・タイプと全く同じ様に、テーブル中の列定義に用いられます。DATALINKの値は、ファイル
を含んでいるデータ・リンク・サーバーrの名前と、Uniform Resource Locator (URL)の観点から見たファイル名をコード化したもの
です。
LOBデータ・タイプを扱うアプリケーションとは違い、このアプリケーションは参照されるファイルにあるデータにアクセスするのに
SQLを用いません。アプリケーションはファイル名を獲得し、その内容を獲得したり、操作したりするのにはそれまでそうしていたよ
うに、ファイルAPI (Read/Write)を用います。
UDBデータ・リンク・マネージャーを使うという事は、 外部ファイルをデータベースと一緒にバックアップ取得でき、SQLデータ・コント
ロール(DCL)文(GRANTやREVOKE)がこれらのファイルの許可をコントロールするのに使われる、という事を意味しています。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 5-6 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
2. データリンク・マネージャーの長所は?
UDBの外部に存在するファイルに対してもUDBの管理サービスを提供
参照保全
セキュリティー
トランザクションの一貫性
バックアップ/リカバリー
既存の外部ファイル参照アプリケーションと共存可能
既存のアプリケーションは、データリンク・マネージャー管理下に置かれる外部ファイルをその
まま使い続けることができる
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: 2. データリンク・マネージャーの長所は?
UDBの利点を使いながらもファイルの実体はUDBの外部にあるという事は、両方のアーキテクチャーの利点を併せ持つ事になり
ます。
DATALINK列では以下の事がサポートされています:
参照保全
DATALINK列はデータベースで参照される間、ファイルをリネームしたり削除したりできなくする事ができます。
セキュリティー
標準のオペレーティング・システムのファイルの(読み書きの)許可は、UDBのセキュリティー・メカニズムによって拡張する事が
できます。例えば、「ブロック」のオプションは、参照ファイルのコピー操作は許可しますが、オリジナルを操作する事は決して許
しません。
すなわち、参照保全のメカニズムは、UDB外部ファイルにまで拡張されます。
バックアップ/リストア機能
トランザクション・マネージメント、およびデータベース・マネージメント・システムのバックアップ/リカバリーのメカニズムにより
整合性が保証されます。
DATALINK列はデータベース・システムの外に保管されたオブジェクトを表していますが、SQLを用いてメタ・データを検索して照会
結果に対応するファイル名を得る事ができます。
DATALINKデータ・タイプを使用できる業務アプリケーションの例として以下のものがあります:
医療アプリケーションでは、レントゲン写真がファイル・サーバーに保管され、その属性がデータベースに保管されます。
エンターテイメント業界のアプリケーションでは、ビデオ・クリップの資産管理を行ないます。ビデオ・クリップは、ファイルーサー
バーに保管されますが、クリップの属性は、データベースに保管されます。ビデオ・クリップにアクセスするとき、メタ情報へアク
セスするためのデータベースの権限に基づいたアクセス・コントロールを提供します。
World Wide Webアプリケーションでは、何百万ものファイルを管理したり、データベース権限に基づいてアクセス・コントロール
を許可します。
CAD/CAMのアプリケーションでは、記述図面がファイルとして保存され、その属性がデータベースに保管されます。照会は、
ファイルの属性に対して実行されます。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 7-8 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
3. データリンク・マネージャー・プログラミング・モデル
クライアント・アプリケーション
SQL
API
ファイル・
システムAPI
データ・リンク・マネージャー
(4) 直接データ
を渡す
(またはhttpプロトコル)
(3) ファイル名を
オープン
(1) connect ..
select
(2)DATALINKカラムを戻す
(URL 情報)
メタ・データはUDBサーバーに保管
対象のファイルを見つけるのに
メタ・データを検索するSQLを使用
UDBサーバー
データベース
(メタ・データ)
既存のアプリケーションを用いてファイルをアクセス
ファイル・データはデータリンクマネージャー
管理下に置かれるがそのまま存在
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: 3. データリンク・マネージャー・プログラミング・モデル
データ・リンク・マネージャーを使用する事で、「従来の」ファイル・ベースのアプリケーションと、SQLを通してRDBMSにアクセスする
利点とを併せ持つ事ができます。
以下は、プログラミングの観点からこれら2つのアプローチをどのように組み合わせているかを示しています。
(1) アプリケーションの「DB関連」のパートは、UDBサーバーのデータベースにCONNECTを実行し、SQLの結果を通してメタ・
データにアクセスします。
DDL/DMLが要求するの全てのタイプ、特にSELECT/INSERT/UPDATE/DLETEは、有効です。
(2) DBは、アプリケーションにメタ・データとURLを返します。
(3) アプリケーションは、ファイルシステムの「Open」、「Copy」や(インターネットやイントラネットのアプリケーションの場合
は)HTTPのリクエストを通してファイル・サーバーからファイルのコンテンツを得るため、URLを用います。
データベース中に定義された全てのアクセス・コントロール制限は、(DLFMによって管理される)ファイル・システムにも適用
される事に注意して下さい。
(4) ファイル・サーバーは、データをクライアントに向わせます。これで「保管」、または「読み取り」ができます。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 9-10 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
4. データリンク・マネージャーの構成要素
2つの構成要素
データリンク・ファイル・マネージャー(DLFM)
ファイルの管理用、UDBエンジンを含む
データリンク・ファイルシステム・フィルター(DLFF)
リンクされたファイルを含む各リンク・ファイル・システムのアクセス・コントロール用
データ・リンク・マネージャー (DLM)
DLFM
UDB
DLFF
リンクされた
ファイル
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: 4. データリンク・マネージャーの構成要素
この資料では、2つのマシンを区別するのに以下の用語を使用します:
UDBサーバー
DB2 UDBが導入され、データベースが作成されているマシンです。データベース上に作成されたテーブルには、DATALINK列
があります。DATALINK列が参照する実ファイルは、データベースの外に保管されます。
データ・リンク・マネージャー・サーバー
UDBデータ・リンク・マネージャーが導入されているマシンです。DB2サーバー(DATALINK列)が参照するファイルを管理しま
す。
通常は、UDBサーバーとUDBデータ・リンク・マネージャー(DLM)はネットワークで接続された別マシン上に存在します。
UDBデータ・リンク・マネージャーと、UDBサーバーとを物理的にひとつのマシン上に導入する事もできます。
その場合、以下の事を考慮しなければなりません:
UDBサーバーと、UDBデータ・リンク・マネージャー(DLM)コンポーネントとは、全く同じFixPakレベルでなければなりません。
UDBサーバーとDLMとが同一マシンに導入された場合、データ・リンク・ファイル・マネージャー(DLFM)によって使われるデータ
ベースは、UDBサーバーのデータベース(ここにはアプリケーションによってアクセスされるDATALINK列があります)とは別イン
スタンスに置かれなければなりません。例えば、UDBサーバーとして使うインスタンスの名前には「dlfm」は使ってはいけませ
ん。これはデータ・リンク・ファイル・マネージャーによって使われるからです。
UDBデータ・リンク・マネージャーは以下の2つの構成要素を含みます:
データリンク・ファイル・マネージャー (DLFM)
全てのファイルを、UDBデータベースのDATALINK列によって参照される特定のデータ・リンク・マネージャー・サーバーに登録
します。この構成要素は、リンクされたファイルのメタ・データ(管理情報)をトラックします。これはまた、ポイント・イン・タイムの
ロールフォワード回復のために、以前リンクされていたファイルをもトラックします。
データリンク・ファイルシステム・フィルター (DLFF)
登録されたファイルが削除されたり、リネームされたりしない様に、ファイル・システム・コマンドをフィルターします。またオプ
ションとして、適切なアクセス権限があるかどうかコマンドのフィルターもします。オペレーティング・システムのファイル・システ
ムを拡張して、ファイルAPIがUDBサーバー上のデータとデータ・リンク・マネージャーによって管理されている外部ファイルとの
間で保全性が保たれるようにします。
DLFFは、DATALINK列によって参照される全てのファイル・システムに適用されなければなりません。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 11-12 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
5. DATALINKデータタイプのオプション
アクセス・コントロール、リカバリーなどに関するオプションが指定可能
create table collection (
number
desc
integer,
varchar (50),
image DATALINK
LINKTYPE URL <-(1)
FILE LINK CONTROL <-(2)
INTEGRITY ALL <-(3)
READ PERMISSION DB <-(4)
WRITE PERMISSION BLOCKED <-(5)
RECOVERY YES <-(6)
ON UNLINK RESTORE ) <-(7)
create table collection1 ( number integer,
desc varchar (50),
image DATALINK LINKTYPE URL
NO LINK CONTROL )
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: 5. DATALINKデータタイプのオプション
この例では、3つの列を持つテーブル、COLLECTIONを作成しています。最初の2つは「IMAGE」という名前のDATALINK列に対す
るメタ(またはメタ・データ)を持っています。
NO LINK CONTROLが指定された場合(2番目の例)、(2)~(7)は指定されません。NO LINK CONTROLは、それが省略時値である
ため、省略する事ができます。URLの構文のみがINSERT時にチェックされ、データベース・マネージャーのコントロールは、ファイ
ルに及びません。
「FILE LINK CONTROL」が指定された場合、(2)~(7)も指定されなければなりません。
(1) LINKTYPE URLは、DATALINK列に対するデータとして、Uniform Resource Locators(URL)が提供されなければならない事を表
しています。このURL表記は、あらゆるページがURLリンクによって参照されるWWWから知られています。 現リリースでは、この値
のみ有効です。
(2) FILE LINK CONTROLは、ファイルの存在をチェックする事を表しています。
(3) INTEGRITY ALLは、UDBとファイルの間の保全の度合を表します。現リリースではALLのみ指定できます。UDBは、FILE LINK
CONTROLオプションが指定されている場合、そのファイルが有効かどうかのチェックをします。INTEGRITY ALLの指定により、
UDBがそのファイルに対して責任を持ちます。これは、UDBがファイル・アクセスを管理し、オペレーティング・システムからのいか
なるリネームや削除の操作をも許さないという事を意味しています。
(4) READ PERMISSION
DB:読取りアクセスの許可は、データベースによって決まります。DATALINK列の読取りで返される有効なファイル・アクセス・
トークンを通してのみファイルへのアクセスを行なう事ができます。SELECT文の実行でアクセス・トークンを持ったURLが返さ
れます。このアクセス・トークンを持ってファイルをオープンしなければなりません。
FS:読取りアクセスの許可は、ファイル・システムの許可で決まります。ファイルはアクセス・トークン無しで取り出す事ができま
す。─つまり、ファイルを取り出すのにSELECT文を実行する必要が無いと言う事です。
(5) WRITE PERMISSION:ファイルへの書き込み許可を決定する方歩を指定します。
BLOCKED:ファイルはどのインターフェースを介しても直接、更新する事はできません。この情報を更新するには代替の手法
を用いなければなりません。例えば、ファイルがコピーされて、そのコピーが更新されるとします。DATALINK列はファイルの新
しいコピーを指すように更新されます。
FS:書き込みアクセス許可は、ファイル・システムの許可で決まります。列からファイル名(URL+アクセス・トークン)を取り出す
事無く、その様なファイルにアクセスする事ができます。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 13-14 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
解説: 5. DATALINKデータタイプのオプション
(6) RECOVERY:この列の値によって参照されているファイルのPoint In TImeリカバリーをUDBがサポートするかどうかを指定しま
す。
YES:UDBは、この列の値で参照されているファイルのPoint In Timeリカバリーをサポートします。この値は、INTEGRITY ALL
とWRITE PERMISSION BLOCKEDの両方が指定されている場合のみ指定する事ができます。
NO:Pint In Timeリカバリーがサポートされない事を指定します。
(7) ON UNLINK:DATALINK列が変更されたり、削除(リンク解除)されたりした時に実行する処置を指定します。WRITE
PERMISSION FSが使用されている場合には、適用できない事にご注意下さい。
RESTORE:ファイルがリンク解除された時にDATALINKファイル・マネージャーが、そのファイルをファイル・リンク時の許可を
持った所有者に返すように指定します。ユーザーがそのファイル・サーバーに最早登録されていない場合には、結果は製品に
より異なります。これはINTEGRITY ALLとWRITE PERMISSION BLOCKEDの両方が指定された場合にのみ指定する事ができ
ます。
DELETE:リンクが解除された場合にはファイルが削除される様に指定します。READ PERMISSION DBとWRITE PERMISSION
BLOCKEDの両方が指定された場合にのみ指定する事ができます。
(3)~(7)の代わりに、MODE DB2OPTIONSを用いる事ができます。これは以下のデフォルト・オプションが定義されます。
INTEGRITY ALL
READ PERMISSION FS
WRITE PERMISSION FS
RECOVERY NO
ON UNLINKは、WRITE PERMISSION FSが用いられている場合、適用できません。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ブランク・ページです
AdvSQL-7 ( 15-16 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
6. データアクセス・トークン
ファイルのオープンに必要な文字列
ファイル・オープンのためのパスワードのようなもの
アクセス・トークンは、dl_expint (DB CFGパラメータ)によって指定された
時間だけ有効
ファイル・アクセス制御は、UDBとデータ・リンク・マネージャーとの組み
合わせで実現
UDBはDATALINK列の選択時にアクセス・トークンを動的に割り当て、
ファイル・パス名にそれを埋め込み使用
例
必要なファイル:
/videos/french.mpg
アクセス・トークン付き表記:
/videos/8QGdxt2B7UxOQHAU;french.mpg
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: 6. データアクセス・トークン
テーブル作成時にDATALINK列にREAD PERMISSION DBオプションが指定された場合、ファイル・アクセス・トークンが提供されま
す。
ファイルに対するルール・ベースのアクセス・コントロールの取扱い:
ユーザーが(SQLビューの様な)あるメタ・データを照会する事ができるならば、その人はそれに符合するファイルにアクセスする事
ができます。どの様なファイル・システムAPIでもコマンドでも、ファイルの読取りに使えます。
UDBはDATALINK列のSELECTを通して、動的に該当ファイルに対するアクセス・トークンを割り当て、それをファイル・パス名に埋
め込みます。
(例)
ファイルを要求:
/videos/french.mpg
戻り値: /videos/8QGdxt2B7UxOQHAU;french.mpg
アクセス・トークンの生成は、DB2とDLFF間でのみ共有されます。
アクセス・トークンの妥当性には時間制限があり、それはDB構成パラメータ dl_expint に指定されなければなりません。各(SELECT
による)アクセスに対して、新しいトークンが生成され、dl_expintで指定された時間の間、それは有効となります。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 17-18 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
7. データアクセス・トークンの例
UDBの組込み関数DLURLPATHを使用してアクセス・トークンを入手
create table collection
(number integer, desc varchar(50), artist varchar (20),
age integer,
image DATALINK ..... INTEGRITY ALL READ PERMISSION DB ....)
create view for_kids_only as select * from collection where age <= 12
grant select on for_kids_only to user hans, user inge, group admins_childs
select dlurlpath(image) from for_kids_only where artist = 'PICASSO'
---> 戻り値 .../pictures/8QGdxt2B7UxOQHAU;p345.jpg
.../pictures/7jkjh098hhjkghjh;p789.jpg
アクセス・トークンを埋め込んだURLは、以下の様にファイルのopen時に用いられる:
fopen("/pictures/8QGdxt2B7UxOQHAU;p345.jpg", READ);
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: 7. データアクセス・トークンの例
(1) CREATE TABLE文でREAD PERMISSION DBオプションがDATALINK列に設定されているので、リンクされているファイルの読
み取りにはアクセス・」トークンが必要です。
(2) ビューでは写真にアクセスするルールを指定していて、12歳以下の人と指定された写真のみが戻り値として返ってきます。
(3) ユーザー名Hans、Inge、そしてadmin_childsのグループに属しているユーザーだけがこのビューをSELECTできます。
COLLECTIONテーブルの他のビューにはアクセスできません。
この事は、ビューと許可の正しい組み合わせでファイルにアクセスするために、ルール・ベースのアクセス・コントロールが定義
されている事を意味しています。
オペレーティング・システムのほとんどの(全てではありませんが)ファイル・アクセス・コントロールのメカニズムでは、各ファイルに
対して(12歳以下といった)ルールに基づいたアクセスを許可するといった事はできません。
(4) SELECTは、指定されたファイルに対するURLとアクセス・トークンを返します。
(5) これらの「URL+アクセス・トークン」は、ファイルにアクセスするために、アプリケーションによって使われます。
アクセス・トークン(例えば、.../pictures/p345.jpg)を用いないURLを通してのOPEN、READ、その他の操作は、アクセス違反を返し
ます。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 19-20 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
8.データリンク・マネージャーのセットアップ(DLM側)
データリンクマネージャー側での設定
1. DLFMインスタンスを作成 (dlfmcrtコマンド)
2. Data Links Managerの制御下にあるファイルのトラックをキープするために用いられるDB2
データベースを作成
dlfm setup
3. DLMサーバーを使用するデータベースを登録
データベースの登録
dlfm add_db <dbname> <db2instance> <hostname>
4. DLMを開始
dlfm start
5. ファイルを格納するファイル・システムを作成、マウント、登録
Data Links Filesystem Filterが用いる為のファイル・システムを構成
ファイル・システムを登録
dlfm add_prefix <file system name>DLMサーバー側での設定
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
8. データリンク・マネージャーのセットアップ(DLM側)(続き)
データリンクマネージャー側での設定(続き)
6.バックアップ/リカバリーができる様にしてデータ・リンク・マネージャーを使用可能にする
DLFM_BACKUP_DIR_NAME環境変数を設定(ディレクトリー名、または「ADSM」)
省略時値は「dlfm_directory/dlfm_backup」(dlfm_dirは、DLMアドミニストレーターのホーム・ディ
レクトリー)
DLM上のDATALINKファイルは、DATALINK値がDB2サーバーのテーブルに挿入された時に
アーカイブされます。(テーブル作成時にRECOVERY YESが指定されている場合。)
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 21-22 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
解説: 8. データリンク・マネージャーのセットアップ(DLM側)
UDBサーバーと、データ・リンク・マネージャー間の通信を構成するために、それぞれのマシンを構成しなければなりません。
Data Links Managerサーバー上で:
(1) DLFMインスタンスの作成
dlfmcrtコマンドを実行して下さい。インスタンス名は「dlfm」でなければなりません。
/usr/lpp/db2_06_01/instance/dlfmcrt -p port# dlfm
デフォルトのポート番号は10001です。/etc/services (AIX)のエントリーに以下の様なエントリーを追加しなければなりません:
dlfmd
10001/tcp
(2) UDBデータベースの作成
データ・リンク・マネージャーのコントロール下にあるファイルのトラックを保管するのに使われます。「dlfm setup」を実行すると、
データベースとテーブルが作成されます。
(3) DLMサーバーが使用するデータベースを登録
データベースを登録するため、dlfm add_dbコマンドを実行して下さい:
dlfm add_db collection db2inst1 dbserv2.austin.ibm.com
(4) DLMを開始
「dlfm start」を実行して下さい。
(5) ファイルを保管するのに用いられるファイル・システムを作成、マウント
JFSまたはFS (AIX)、あるいはNTFS (Windows NT)を作成するか、既存のものを使います;次に、データ・リンク・ファイルシステム・
フィルターによって使われるファイル・システムを構成し(DB2データ・リンク・マネージャー クイック・ビギニング・ガイド参照)、それら
をマウントします。
(6) ファイル・システムを登録(接頭辞と保存されたファイル)
ファイルシステムを登録するため、dlfm add prefixコマンドを実行して下さい:
dlfm add_prefix /images
リカバリーが定義されている(テーブル作成時に「RECOVERY YES」を指定)DATALINK列を持つテーブルに、DATALINK値を挿入し
ようとすると、データ・リンク・マネージャー・サーバー上の対応するDATALINKファイルはアーカイブ・サーバーにバックアップされる
ようにスケジュールされます。現時点では、ファイルをアーカイブ・サーバーにバックアップするために、2つのオプションがサポート
されています。一つはDISK COPY (環境変数 DLFM_BACKUP_DIR_NAME=directory name を指定)であり、もう一つはADSM (環境
変数 DLFM_BACKUP_DIR_NAME=ADSMを指定)です。アーカイブ・ファイルは、ファイルを参照するDATALINKデータがあるテーブ
ルのデータベースに対してPoint In Timeリカバリーが行われる時に必要となります。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ブランク・ページです
AdvSQL-7 ( 23-24 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
9. データリンク・マネージャーのセットアップ(UDB側)
UDBサーバー側でのセットアップ
1.データベース・マネージャー構成パラメータ DATALINKS を YES に設定
db2 update dbm cfg using datalinks yes
2. データ・リンク・マネージャーを登録
db2 ADD DATALINKS MANAGER FOR dbname
USING NODE hostname PORT port#
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: 9. データリンク・マネージャーのセットアップ(DB2側)
UDBサーバー上で
(1) データベース・マネージャー構成パラメータの設定:
db2 update dbm cfg using datalinks yes
(2) データ・リンク・マネージャーの登録:
リンクされているファイルを保存している全てのサーバーは、ここで登録しなければなりません。
db2 ADD DATABASE MANAGER FOR dbname USING NODE hostname PORT port#
これでシステムは準備完了です。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 25-26 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
10. リンクの作成
UDBとDLM間のリンクを作成
1. 登録したファイル・システムにファイルを置く (DLM側)
COPYコマンドなどを使用
2. DATALINK列を持った表を作成 (UDB側)
DATALINK列に適切なオプションを指定
3. 表に列を挿入 (UDB側)
DATALINK値を出すのに「dlvalue」関数を使用
行の挿入が完了後、ファイルはアクセス・トークン無しではアクセス不可 (READ PERMISSION
DBが指定されている場合)
リンクされているファイルがアーカイブされる (表作成時にRECOVERY YESが指定されている
場合)
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: 10. リンクの作成
データ・リンク・マネージャー・サーバーにファイルを置いた後に、DLMとUDBとの間にリンクを張ることができます。これは次のよう
な手順で行います。
(1) (DLMサーバー上の)登録したファイル・システムにファイルを置き、リンクさせたいファイルを登録したファイル・システムにコ
ピーします。ファイルはまだINSERT INTO TABLE文でUDBサーバーにリンクされていないので、DLFFによるアクセス・コントロール
は適用されません。
(2) DATALINK列を持ったテーブルを(UDBサーバー上に)作成します。
(3) (UDBサーバー上の)テーブルに行を挿入します。
データ・リンク・サーバー fileserv1 の p10.img にポイントするような、DATALINK列を持つテーブルに行を挿入する場合、INSERT文
は以下の通りです:
db2 "insert into collection values
('oo1', 'Nice Picture',dlvalue( 'http://fileserv1/images/p10.bmp'))"
UDBはこのファイルがデータ・リンク・サーバー fileserv1 にあるかどうかチェックします。存在した場合、そのファイルはバックアッ
プ・ディレクトリーに、非同期にコピーされ、UDBサーバー上にあるデータベースやテーブル等の情報が、データ・リンク・ファイル・
マネージャーの登録テーブルに保管されます。
UDBサーバー側では、p10.bmpファイルの存在を特にチェックしません。データ・リンク・ファイル・マネージャーに「LINK」の要求を送
るだけです。データ・リンク・ファイル・マネージャーがこれをチェックし、必要な操作を行ない、DBサーバーにリターン・コードを返し
ます。
DATALINK列にON UNLINK RESTOREが指定されている場合、オリジナルの所有者とオリジナルの特権もファイルがリンクされた
時(例えば行が挿入された時)に保管されます。後にファイルのリンクが解除された時(つまり、そのファイルが最早UDBデータリン
ク・マネージャーのコントロールの下に無い時)、ファイルはオリジナルの状態に戻されます。
リンク/リンク解除の振る舞いは、(CREATE TABLE文中に指定された)DATALINK列の定義に依存します。サンプル・シナリオの表
の作成を参照して下さい。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 27-28 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
11. リンクファイルの更新
リンクされているファイルを直接更新する事は不可(WRITE
PERMISSION BLOCKEDが指定されている場合)
必要な事
アクセス・トークンを得る(READ PERMISSION DBが指定されている場合)
リンクされたファイルを新しいファイルにコピー
新しいファイルの内容を更新
新しいファイル・パスにあるDATALINK列の値を更新
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: 11. リンクファイルの更新
テーブル作成時にWRITE PERMISSION BLOCKEDが指定されている場合(RECOVERY YES指定されている時は、この指定がされ
ていなければなりません)、アプリケーションはDATALINK列が参照しているファイルを更新する事はできません。そのファイルを更
新したい場合は、それをコピーし、コピーしたファイルを更新し、それからDATALINK値を更新する必要があります。テーブル作成
時にRECOVERY YESが指定されている場合、古いバージョンのリンク・ファイルが残っています。新しいファイルがバックアップ・
ディレクトリーにコピーされるか、(ADSMの様な)階層的なストレージ・サーバーにアーカイブされます。これで、Point In Timeのリカ
バリーが可能になるのです。
以下は、リンク・ファイルがどのように更新されるかの例です:
リモート・クライアント・アプリケーションは、UDBサーバー上のデータベースにCONNECTを発行します。
次に、アプリケーションは以下の様なSELECT文を発行します:
"select dlurlpath(dlcol) into :fname from dl_table where ..."
そして、アプリケーションは、:fname のファイルをコピーし、新しいファイル:fname_newを作ります。
次に、アプリケーションは:fname_newファイルの内容を更新します。
このファイルの更新をテーブルdl_tableに反映させるため、アプリケーションは次の様なコマンドを使います:
"update set dlcol=dlvalue(:fname_new) where..."
WRITE PERMISSION FSがテーブル作成時に指定されている場合、アプリケーションはファイルの内容を直接書きかえる事ができ
ます。そして、データベースの更新は必要ありません。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 29-30 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
12. 考慮点
1つのテーブル内で、DATALINK列とDLFMの固有な組み合わせは最大
256個
データ・リンク・マネージャーは以下のシステム上に導入可能
DB2 UDB EE (AIX、Solaris、NT)
UDBサーバー、およびデータリンク・マネージャーは、同じリリース・レベ
ルであることが必須
DB2 V7 - データ・リンク・マネージャー V7 のみサポート
DB2 V6 - データ・リンク・マネージャー V6 のみサポート
DATALINK列を、固有索引、プライマリー・キー、および外部キーに含
める事は不可能
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: 12. 考慮点
DATALINK列と、使用されるDLFMの数の組み合わせには上限があります。
1つのテーブル内で、DLFMとDATALINK列の固有な組み合わせは最大256個です。
例えば、構成されたDLFMの数が2の場合、表は最大128個のDATALINK列を持つ事ができます。
データ・リンク・マネージャーは、AIX/Solaris/NT以外のオペレーティング・システム上にあるデータベースと一緒に用いる事はでき
ません。また、UDBエンタープライズ拡張版(EEE)のAIX版、Solaris版、あるいはNT版とも一緒に用いる事ができません。
DATALINK値は、UDB EEEシステムをポイントする事ができません。
更に、UDBデータリンク・マネージャー上のファイルを参照するために、DATALINKデータタイプをUDB EEE上で使う事はできませ
ん。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 31-32 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
[7] 外部データアクセス
[7-2] OLE DB プロバイダー
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
内容
1. OLE DBとは?
2. OLE DBとADO
3. ADOプログラミング・モデル
4. Connectionオブジェクト
5. Commadオブジェクト
6. Parameterオブジェクト
7. Rowsetオブジェクト
8. Fieldオブジェクト
9. Errorオブジェクト
10. IBM OLE DBプロバイダー for DB2がサポートする環境
11. IBM OLE DBプロバイダー for DB2のADOサポート
12. IBM OLE DBプロバイダー for DB2のOLE DBサポート
13. ADOアプリケーションの例
入力ストアード・プロシージャーの呼出し
出力ストアード・プロシージャーの呼出し
14. DB2とOLE DBデータタイプ間のマッピング
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 33-34 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
内容
15. 考慮点
参考資料
IBM OLE DBプロバイダー for DB2のADOサポート状況
メソッド
プロパティー
コレクション
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ブランク・ページです
AdvSQL-7 ( 35-36 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
1. OLE DBとは?
アプリケーションが様々な情報ソースにあるデータに同じようにアクセスで
きるようにするためのOLE/COMインターフェース群
コンシューマーとプロバイダー
アプリケーション
コンシューマー
OLE DBインターフェース
を利用するアプリケーション
ActiveX Data Object
(ADO)
プロバイダー
データ
コンシューマー
OLE DBインターフェースを
提供するコンポーネント
IBM OLE DBプロバイダーfor DB2
により、
DB2はOLE DBプロバイダー
として振る舞うことができる
データ
プロバイダー
OLE DB データプロバイダー(サービス)
カーソル
クエリー
ビジネス
プロセッサー サービス
OLE DB データプロバイダー(データ)
ODBC
データ
プロバイダー
ODBC
データソース
IBM OLE DB
プロバイダー
for DB2
DB2
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: OLE DBとは?
Microsoft OLE DBは、アプリケーションが多様な情報ソースに保管されるデータに対して一様にデータアクセスができるようにする
ためのOLE/COMインターフェースのセットです。
OLE DBのアーキテクチャーでは、OLE DBコンシューマーとOLE DBプロバイダーが定義されています。
OLE DBコンシューマー
OLE DBインターフェースを利用するアプリケーションやシステムのことです。
OLE DBプロバイダー
OLE DBインターフェースを提供するコンポーネントのことです。
IBM OLE DBプロバイダー for DB2により、DB2はOLE DBプロバイダーとして振る舞うことができ、OLE DBベースのアプリケーショ
ンでは、ネイティブOLEインターフェースを使ってDB2データを抽出したり、検索できます。
IBM OLE DBプロバイダー for DB2のプロバイダー名はIBMDADB2となっています。
DB2 Connectが導入されている環境では、OLE DBコンシューマーは、PC/UNIX系DB2だけでなく、DB2 for OS/390、DB2 for
VM/VSE、DB2 for OS/400などのホスト系DB2上のデータへアクセスできます。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 37-38 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
2. OLE DBとADO
OLE DB
Microsoft Visual C++などC/C++で使用できるAPI
ネイティブAPIのためADOよりはオーバーヘッドは少ない
ADOよりも複雑なAPI
ADO
Microsoft Visual C++、Visual Basic、Visual J++などで使用できるAPI
OLE DB上のオブジェクト・モデルのため、ADO APIはOLE DB APIにマップされる
ネイティブAPIであるOLE DBよりはオーバーヘッドは多い
OLE DBよりも単純なAPI
ADO
OLE DBへマップ
ネイティブAPI
OLE DB
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: OLE DBとADO
OLE DB
OLE DBでサポートされる言語は、MicrosoftのVisual C++などC/C++言語だけです。
ネイティブAPIのため、ADOに比べてオーバーヘッドが少ないと言えます。
ADOよりも複雑なAPIです。
ADO
ADO APIとOLE DB APIの関係は、RDO APIとODBC API、DAO APIとODBC APIの関係に似ています。
RDOやDAOはODBC上のオブジェクト・モデルですが、ADOはOLE DB上のオブジェクト・モデルです。
ADOはOLE DBをカプセル化したものであり、ADO APIはネイティブのOLE DB APIにマップされることになります。
その結果オーバーヘッドが生じます。
ADOでサポートされる言語は、MicrosoftのVisual C++,Visual Basic,Visual J++などがあり、OLE DBよりも充実しています。
OLE DBよりも単純なAPIです。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 39-40 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
3. ADOプログラミング・モデル
Command
(オプション)
Parameter
(オプション)
Parameters Collection
Execute
Source
Execute
Connection
Recordset
Field
Fields Collection
Active Connection
Errors Collection
(オプション)
Error
(オプション)
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: ADOプログラミング・モデル
OLE DBとADOの2種類のAPIを紹介しましたが、簡単にアプリケーションを作成することができ、選択可能な開発言語も豊富なこと
から、実際にはADO APIを使ったアプリケーションの方が圧倒的に多いようです。ここでは、ADOのプログラミング・モデルの概要
について説明します。
ADO(ActiveX Data Object)プログラミング・モデルはマイクロソフト社によって開発されたデータアクセス・プログラミング・モデルで
す。
ADOでは階層関係はさほど重要ではなく、ErrorオブジェクトとFiledオブジェクトを除いて各オブジェクトをそれ単体で作成できま
す。例えば、複数のConnectionオブジェクトに関連付けできるようなCommandオブジェクトを作成することができます。
各インターフェースの概要は次の通りです。
Connectionインターフェース
データソースへの接続を表し、ConnectionインターフェースのExecuteメソッドを使ってコマンドを実行できます。
コマンドがデータ・レコードを戻す場合はデフォルトのRecordsetオブジェクトが作成されて返されますが、より複雑なレコード
セットを指定するにはRecordsetオブジェクトを作成します。
Commandインターフェース
データソースで処理することのできるコマンド(クエリーまたはステートメント)を表し、これはオプションとなっています。
コマンドの例として、SQLステートメント、ストアード・プロシージャーの呼び出しなどがあります。
Parameterインターフェース
コマンドのパラメーターを表します。
Parameterオブジェクトを明示的に作成し、Parameterコレクションに追加することでパラメーター・バインディング情報を自動的
に埋めるためにシステム・カタログを調べるというコストの高い処理を避けることができます。
Recordsetインターフェース
カーソルの機能はこのインターフェースで表現されています。
Fieldインターフェース
Recordset内の列を表します。
Recordsetオブジェクトがないと作成できません。
Errorインターフェース
データソースから返されるエラー・オブジェクトを表します。オプションです。
Connectionオブジェクトがないと作成できません。
コレクションとは他のオブジェクトを含むオブジェクトの集まりのことです。コレクションにあるオブジェクトは、コレクション・メソッドに
よってテキスト文字列、整数の何れかを取得できます。
例
Connectionオブジェクトが持つErrorsコレクション。ErrorsコレクションにはErrorオブジェクトが含まれています。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 41-42 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
4. Connectionオブジェクト
Connection
Errors
Command
Recordset
データソースとのセッションを表す
ConnectionString、Modeプロパティーを使って接続設定を行う
Providerプロパティーを使ってOLE DBプロバイダーを指定する
IsolationLevelプロパティーを使って分離レベルの指定を行う
Executeメソッドを使ってコマンドを実行し、CommandTimeoutプロパティーを使ってコマンド終
了までの待機時間を設定する
Open、Closeメソッドを使って、データベースへの接続と遮断を行う
Errorsコレクションを使って、データソースから返されたエラーを調べる
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: Connectionオブジェクト
ADOの各オブジェクトについて概要を説明します。最初はConnectionオブジェクトです。
Connectionオブジェクトはデータソースとのセッションを表します。
図の網掛け部分はコレクションを表します。
ConnectionオブジェクトのExecuteメソッドを使うことで、Commandオブジェクトを作成することなしに接続上でコマンドを実行するこ
とができます。
Commandオブジェクトを使用しないでクエリーを実行する場合は、クエリー・ストリングをConnectionオブジェクトのExecuteメ
ソッドに渡します。
クエリー・パラメーターを使う場合、あるいは、コマンドテキストのまま再実行をする場合はCommandオブジェクトが必要になり
ます。
他の定義済みのオブジェクトから独立したConnectionオブジェクトも作成することができます。
コマンドを実行する場合は、CommandオブジェクトのNameプロパティーを使用してコマンドに名前を付けます。
CommandオブジェクトのActiveConnectionプロパティーを使用する接続に設定します。
Connectionオブジェクトのメソッドとしてこのコマンド名を使用し、パラメーターがある場合はパラメーターを後に続けて返される
行がある場合Recordsetオブジェクトを後に続けて、ステートメントを発行します。
Recordsetプロパティーを設定して、結果として生じるレコードセットをカスタマイズします。
使用例
Dim ConnectStr As String
Set dbSample = New Connection
ConnectStr = "PROVIDER=MSDataShape; DATA PROVIDER=IBMDADB2; dsn=" & DBName & ";"
If txtUserName <> "" Then
'ユーザー名が指定された場合は、接続ストリングにユーザー名連結します
ConnectStr = ConnectStr & "uid=" & txtUserName & ";"
End If
If txtPassword <> "" Then
'パスワードが指定された場合は、接続ストリングにパスワードを連結します
ConnectStr = ConnectStr & "pwd=" & txtPassword & ";"
End If
'データベース接続をオープンします
dbSample.Open ConnectStr
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 43-44 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
5. Commandオブジェクト
Connection
Command
Parameters
データソースに対して実行する、特定のコマンドの定義
CommandTextプロパティーを使ってコマンド(SQL文など)を定義する
ParameterオブジェクトおよびParametersコレクションを使って、パラメーター・クエリーあるいは
ストアード・プロシージャー引数を定義する
Executeメソッドを使ってコマンドを実行し、Recordsetオブジェクトを戻す
CommandTypeプロパティーを使ってコマンド・タイプを指定する
Preparedプロパティーを使ってコマンドの準備を行う
ActiveConnectionプロパティーを使ってConnectionオブジェクトとComanndオブジェクトを関連
付ける
データを取得するためRecordsetオブジェクトのSourceプロパティーへCommandオブジェクトを
引き渡す
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: Commandオブジェクト
Commandオブジェクトは、データソースに対して実行する、特定のコマンドの定義です。
図の網掛け部分はコレクションを表します。
Commandオブジェクトを作成しないでクエリーを実行する場合は、クエリー・ストリングをConnectionオブジェクトのExecuteメソッド、
あるいは、RecordsetオブジェクトのOpenメソッドに引き渡します。
クエリー・パラメーターを使う場合、あるいは、コマンドテキストのまま再実行をする場合はCommandオブジェクトが必要になり
ます。
ActiveConnectionプロパティーを有効な接続ストリングに設定して、定義済みのConnectionオブジェクトから独立したCommandオ
ブジェクトを作成できます。
この場合もConnectionオブジェクトが作成されますが、オブジェクトの値は変数に代入されません。
同じ接続に複数のCommandオブジェクトを関連付ける場合は、Connectionオブジェクトを作成してOpenする必要があります。
この操作により、Connectionオブジェクトの値が変数に代入されます。
CommandオブジェクトのActiveConnectionプロパティーをこのオブジェクト値に設定しない場合は、同じ接続ストリングを
使っても各Commandオブジェクトの新規Connectionオブジェクトが作成されます。
Commandオブジェクトを実行する場合は、CommandオブジェクトのNameプロパティーを使用してコマンドに名前を付けます。
CommandオブジェクトのActiveConnectionプロパティーを使用する接続に設定します。
Commandオブジェクトがパラメーターを持つ場合は、引数として値をメソッドに渡します。
使用例
Dim parm1 As New ADODB.Parameter
Dim parm2 As New ADODB.Parameter
Set SPCall = New ADODB.Command
Set SPCall.ActiveConnection = db
SPCall.CommandText = "ONE_RESULT_SET"
SPCall.CommandType = adCmdStoredProc
'パラメーターのセット
Set param1 = SPCall.CreateParameter("InValue", adDouble, adParamInput, , 17645)
SPCall.Parameters.Append param1
Set param2 = SPCall.CreateParameter("ErrorCode", adInteger, adParamOutput, , 0)
SPCall.Parameters.Append param2
Set rs = SPCall.Execute
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 45-46 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
6. Parameterオブジェクト
Command
Parameters
Parameter
Commandオブジェクトに関連付けられたパラメーターまたは引数を表す
Nameプロパティーを使って、パラメーター名を設定または戻す
Valueプロパティーを使って、パラメーター値を設定または戻す
Attributes、Direction、Precision、NumericScale、Size、Typeプロパティーを使って、パラメー
ターの特性を設定または戻す
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: Parameterオブジェクト
Parameterオブジェクトは、パラメーター・クエリーまたはストアド・プロシージャーに基づく、Commandオブジェクトに関連付けられた
パラメーターまたは引数を表します。
図の網掛け部分はコレクションを表します。
Parameterオブジェクトは、パラメーター・クエリーに関連付けられたパラメーター、IN/OUT引数、または、ストアード・プロシー
ジャーの戻り値を表します。
呼び出すストアード・プロシージャーまたはパラメーター・クエリーに関連付けられたパラメーターの名前とそのプロパティーが明ら
かな場合、CreateParameterメソッドと使って適切なプロパティー設定を持つParameterオブジェクトを作成できます。
使用例
Dim parm1 As New ADODB.Parameter
Dim parm2 As New ADODB.Parameter
Set SPCall = New ADODB.Command
Set SPCall.ActiveConnection = db
SPCall.CommandText = "ONE_RESULT_SET"
SPCall.CommandType = adCmdStoredProc
'パラメーターのセット
Set param1 = SPCall.CreateParameter("InValue", adDouble, adParamInput, , 17645)
SPCall.Parameters.Append param1
Set param2 = SPCall.CreateParameter("ErrorCode", adInteger, adParamOutput, , 0)
SPCall.Parameters.Append param2
Set rs = SPCall.Execute
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 47-48 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
7. Recordsetオブジェクト
Connection
Recordset
Fields
表、またはコマンドに実行によって返された結果のレコードを表す
即時更新とバッチ更新の2種類の更新方法をサポート
4種類のカーソルが定義されている
動的カーソル
他のユーザーによる追加、変更、削除をみることができる
キーセット・カーソル
動的カーソルに似ているが、他のユーザーが追加したレコードを表示せず、削除したレコードへのアクセスを許可しない
静的カーソル
他のユーザーによる追加、変更、削除をみることができない
前方スクロールタイプカーソル
レコードの前方スクロールのみ可能である点を除いて、静的カーソルと同じ
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: Recordsetオブジェクト
Recordsetオブジェクトは、基になる表からのレコードセット全体、またはコマンドの実行によって返された結果のレコードを表しま
す。
図の網掛け部分はコレクションを表します。
Recordsetオブジェクトは、常にレコードセット内の一つのレコードのみをカレント・レコードとして参照します。
Recordsetオブジェクトのカーソルタイプを選択するには、CursorTypeプロパティーを設定します。
Openメソッドを使って、CursorType引数を渡すこともできます。
RecordsetオブジェクトをOpenすると、カレント・レコードが最初のレコードのに移動して、BOFとEOFプロパティーの設定値がFalse
になります。レコードが存在しない場合は、BOFとEOFのプロパティーの設定値がTrueになります。
Moveメソッド、MoveFirst、MoveLast、MoveNext、MovePreviousメソッド、AbsolutePosition、AbsolutePageを使ってカレント・レコー
ドの位置を移動できます。
Recordsetオブジェクトは、即時更新とバッチ更新の2種類の更新方法をサポートしています。
即時更新では、Upateメソッドを呼び出すとデータへのすべての変更がすぐに基になるデータソースへ書き込まれます。また、
AddNewとUpdateメソッドを使うと、パラメーターとして値の配列を引き出し、同時に1レコード中の複数のフィールドを更新する
ことができます。
バッチ更新では、UpdateBatchメソッドを使ってデータベースへの一度の呼び出しを行うだけで、プロバイダーで1つ以上のレ
コードへの変更がキャッシュされ転送できます。この操作は、AddNew、Update、Deleteメソッドで行なわれた変更に適用できま
す。UpdateBatchメソッドを呼び出した後でStatusプロパティーを使い、データの競合があるかどうかを調べることができます。
使用例
Dim Rs As Recordset
Dim PictBmp As String
Dim SourceFile As Integer
Dim Result As VbMsgBoxResult
strSQL = "Select EMPNO,PICTURE,PHOTO_FORMAT from EMP_PHOTO" _
& " where PHOTO_FORMAT='bitmap' and EMPNO='" & Employee.Data(0) & "'"
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient
Rs.CursorType = adOpenKeyset
Rs.LockType = adLockOptimistic
Rs.Open strSQL, dbSample
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 49-50 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
8. Fieldオブジェクト
Recordset
Fields
Field
データの列を表す
Nameプロパティーを使ってフィールド名を戻す
Valueプロパティーを使ってフィールド内のデータを表示または変更する
Type、Precision、NumericScaleプロパティーを使ってフィールドの基本特性を戻す
DefinedSizeプロパティーを使って宣言されたフィールドサイズを戻す
ActualSizeプロパティーを使って与えられたフィールド内の実際のデータサイズを戻す
Attributesプロパティー、Propertiesコレクションを使って与えられたフィールドでサポートされて
いる機能の種類を識別する
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: Fieldオブジェクト
Fieldオブジェクトは、データの列を表します。
図の網掛け部分はコレクションを表します。
Recordsetオブジェクトは、Filedオブジェクトで構成されるFiledsコレクションを持ちます。
各FiledオブジェクトはRecordsetオブジェクト内の列に対応します。
FiledオブジェクトのValueプロパティーを使って、カレント・レコードのデータを設定または返します。
メタ・データプロパティー(Name、Type、DefinedSize、Precision、NumericScale)はFiledオブジェクトのRecordsetをOpenする前に利
用できます。
使用例
Dim rstEmployee As ADODB.Recordset
Dim fieldLoop As ADODB.Field
Debug.Print "Field attributes:"
For Each fieldLoop In rstEmployee.Fields
Debug.Print " " & fieldLoop.Name & " = " & _
fieldLoop.Attributes
Next fieldLoop
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 51-52 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
9. Errorオブジェクト
Connection
Errors
Error
単一のメソッドに関連したデータアクセスエラーの詳細情報が含まれる
Descriptionプロパティーでエラーの文字列を参照する
Numberプロパティーでエラー定数のLong型値を参照する
エラー発生源のオブジェクトを識別するSourceプロパティーを参照する
SQLデータソースからのNativeErrorプロパティー情報を参照する
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: Errorオブジェクト
Errorオブジェクトには、単一のメソッドに関連したデータアクセスエラーの詳細情報が含まれます。
図の網掛け部分はコレクションを表します。
ADOオブジェクトでのメソッドに関して、一つまたは複数のプロバイダー・エラーが発生することがあります。エラーが発生するたび
に、一つまたは複数のErrorオブジェクトがConnectionオブジェクトのErrorsコレクションに格納されます。
単一のADOメソッドで発生する複数のエラー生成がサポートされているため、Errorsコレクションの各Errorオブジェクト・プロパ
ティーを列挙したい場合は、ネストしたループを使用します。
別のADOオブジェクトがエラーを生成すると、Errorsコレクションは消去され、Errorsコレクションに新規Errorオブジェクトが格納
されます。
Microsoft Visual Basicでは、ADOエラーはOn Errorイベントを発生させ、ErrオブジェクトにADOエラーを示します。
使用例
Dim errorLoop As ADODB.Error
On Error GoTo Err_Execute
Err_Execute:
If Errors.Count > 0 Then
For Each errorLoop In Errors
MsgBox "Error number: " & errorLoop.Number & vbCr & _
errorLoop.Description
Next errorLoop
End If
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 53-54 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
10. IBM OLE DBプロバイダー for DB2がサポートする環境
Windows
Microsoft Windows NT with Service Pack 3またはそれ以降
Microsoft Windows 95
Microsoft Windows 98
Microsoft Windows 2000
MDAC
Microsoft Data Access Components(MDAC) バージョン2.5またはそれ以降
OLE DBプロバイダーのサポート・レベル0に相当する機能を提供
一部、レベル1相当を含む
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: IBM OLE DBプロバイダー for DB2がサポートする環境
IBM OLE DBプロバイダー for DB2は下記のオペレーティング・システムをサポートします。
Microsoft Windows NT with Service Pack 3またはそれ以降
Microsoft Windows 95
Microsoft Windows 98
Microsoft Windows 2000
IBM OLE DBプロバイダー for DB2を導入するには、DB2アプリケーション開発クライアントの導入に加えて下記のMDACが必要で
す。
Microsoft Data Access Components(MDAC) バージョン2.5またはそれ以降
MDACはマイクロソフト社のWebサイトなどから入手できます。
IBM OLE DBプロバイダー for DB2は機能面では、OLE DBプロバイダーのサポート・レベル0に相当する機能を提供しています。
一部、レベル1相当を含んでいますが、詳細は、DB2のマニュアル「Writing Applications Using the IBM OLE DB Provider for
DB2」の"Supported Interfaces"をご参照ください。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 55-56 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
11. IBM OLE DBプロバイダー for DB2のADOサポート
Microsoft Visual Studio C++またはMicrosoft Visual Basicで開発される
アプリケーションがサポートされる
プロバイダー名にはIBMDADB2を指定する
DSN、UID、PWDキーワードがサポートされる
db2cli.ini内のキーワードはIBM OLE DBプロバイダーに影響する
更新可能なカーソルはCursorLocationがadUseClientのみでサポート
ストアード・プロシージャーをコールするとき、Parameters.Refreshメソッ
ドはサポートされない
(パラメーターは明示的に作成、バインドされなければならない)
Visual BasicのADOアプリケーションでは、データコントロールは
CursorLocationがadUseServerのときサポートされない
CursorLocationがadUseServerかつVisual Basicのとき、WithEvents
キーワードはRecordsetオブジェクトの宣言で使用できない
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: IBM OLE DBプロバイダー for DB2のADOサポート
IBM OLE DBプロバイダー for DB2は、Microsoft Visual Studio C++またはMicrosoft Visual Basicで開発されるADOアプリケーショ
ンをサポートします。
ADOの接続ストリングでは、プロバイダー名としてIBMDADB2を指定してください。
プロバイダー接続ストリングでは、DSN、UID、PWDキーワードがサポートされます。
キーワードは、下記の書式で指定し、複数のキーワードを使う場合は、セミコロン(;)で区切ってください。
キーワード=値
DSNの値はデータベースディレクトリーのデータベース別名を指定してください。、
UIDは、データベース接続に使うユーザーIDを指定してください。
PWDは、データベース接続に使うユーザーIDのパスワードを指定してください。
DB2のマニュアル「CLIガイドおよび解説書」で記述されているキーワードをdb2cli.ini内に定義すると、IBM OLE DBプロバイダーは
その影響を受けます。
ADOアプリケーションで更新可能なカーソルを使いたい場合は、CursorLocationとしてadUseClientを指定してください。
ストアード・プロシージャーをコールするとき、Parameters.Refreshメソッドはサポートされません。
(パラメーターは明示的に作成、バインドされなければなりません。後述の「ADOアプリケーションの例(入力/出力ストアード・プロ
シージャーの呼出し)では明示的に作成、バインドされています。」)
VIsual BasicのADOアプリケーションでは、データコントロールはCursorLocationがadUseServerのときサポートされていません。
CursorLocationがadUseServerかつVisual Basicのとき、WithEventsキーワードはRecordsetオブジェクトの宣言で使用できません。
IBM OLE DBプロバイダーがサポートするADOのメソッド、プロパティー、コレクションの詳細は、当資料の巻末にある参考資料をご
参照いただくか、DB2のマニュアル「Writing Applications Using the IBM OLE DB Provider for DB2」の"Supported ADO Methods
and Properties"をご参照ください。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 57-58 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
12. IBM OLE DBプロバイダー for DB2のOLE DBサポート
ATL(Active Template Library)アプリケーション、OLE DBインターフェー
スを直接コールするC/C++アプリケーションがサポートされる
定数CLSID_IBMDADB2を使うためにはibmdadb2.hをincludeし、更に
include前にDBINITCONSTANTSを定義する必要がある
#define DBINITCONSTANTS
#include "ibmdadb2.h"
COM API CoCreateInstanceをコールしてデータベース接続を行うと、
読み取り専用で、forward専用のカーソルしか使えない
更新可能なカーソルはIDataInitializeまたはIDBPromptInitializeでデータ
ベース接続を行うときだけサポートされる
ATLアプリケーションで更新可能なカーソルを使う場合は、Openメソッド
ではなく、OpenWithServiceComponentsメソッドを使う必要がある
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: IBM OLE DBプロバイダー for DB2のOLE DBサポート
IBM OLE DBプロバイダー for DB2は、ATL(Active Template Library)アプリケーション、OLE DBインターフェースを直接コールする
C/C++アプリケーションをサポートします。
定数CLSID_IBMDADB2を使うためにはibmdadb2.hをincludeし、更にinclude前にDBINITCONSTANTSを定義する必要があります。
下記は指定例です。
#define DBINITCONSTANTS
#include "ibmdadb2.h"
COM API CoCreateInstanceをコールしてデータベース接続を行うと、読み取り専用で、forward専用のカーソルしか使えません。
更新可能なカーソルはIDataInitializeまたはIDBPromptInitializeでデータベース接続を行うときだけサポートされます。
ATLアプリケーションで更新可能なカーソルを使う場合は、Openメソッドではなく、OpenWithServiceComponentsメソッドを使う必要
があります。下記はpenWithServiceComponentsメソッドの使用例です。
hr = db.OpenWithServiceComponents(_T("IBMDADB2"), &dbinit) ;
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 59-60 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
13. ADOアプリケーションの例
(入力ストアード・プロシージャーの呼出し)
SPCall.Parameters.Append param3
Dim SPCall As New ADODB.Command
Set param4 = SPCall.CreateParameter("Department", adChar,
adParamInput, 3, "E11")
Dim parm1 As New ADODB.Parameter
Dim parm2 As New ADODB.Parameter
SPCall.Parameters.Append param4
Dim parm3 As New ADODB.Parameter
Set param5 = SPCall.CreateParameter("ErrorCode", adInteger,
adParamOutput, , 0)
Dim parm4 As New ADODB.Parameter
SPCall.Parameters.Append param5
Dim parm5 As New ADODB.Parameter
Set param6 = SPCall.CreateParameter("ErrorMessage", adChar,
adParamOutput, 32, "null")
Dim parm6 As New ADODB.Parameter
SPCall.Parameters.Append param6
On Error GoTo SP1BtnError
SPCall.Execute
Set SPCall.ActiveConnection = db
MsgBox "SAMPLE Stored Procedure IN_PARAMS was called successfully"
SPCall.CommandText = "IN_PARAMS"
Exit Sub
SPCall.CommandType = adCmdStoredProc
' Set up parameters.
SP1BtnError:
Set param1 = SPCall.CreateParameter("LowSalary", adDouble,
adParamInput, , 15000)
MsgBox "SAMPLE StoredProcedure error: " & Err.Description
SPCall.Parameters.Append param1
Set param2 = SPCall.CreateParameter("MediumSalary", adDouble,
adParamInput, , 20000)
SPCall.Parameters.Append param2
Set param3 = SPCall.CreateParameter("HighSalary", adChar,
adParamInput, 9, 25000)
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: ADOアプリケーションの例(入力ストアード・プロシージャーの呼出し)
この例では、ストアード・プロシージャーのパラメーターとしてセットされた値を使ってemployee表への更新を行うストアード・プロ
シージャー"IN_PARAMS"を呼出しています。
ストアード・プロシージャー"IN_PARAMS"のコードはサンプルとしてUDBサーバー製品に添付されています。
この例では、ADOのCommandオブジェクトとParameterオブジェクトが使用されています。
ストアード・プロシージャーをコールするとき、Parameters.Refreshメソッドはサポートされないので、この例のようにパラメーターを
明示的に作成、バインドしなければなりません。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 61-62 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
13. ADOアプリケーションの例
(出力ストアード・プロシージャーの呼出し)
Dim SPCall As New ADODB.Command
Dim parm1 As New ADODB.Parameter
Dim parm2 As New ADODB.Parameter
Dim parm3 As New ADODB.Parameter
On Error GoTo SP2BtnError
Set SPCall.ActiveConnection = db
SPCall.Execute
MsgBox "SAMPLE Stored Procedure OUT_PARAM calculated median was "
& SPCall(0)
Exit Sub
SP2BtnError:
MsgBox "SAMPLE StoredProcedure error: " & Err.Description
SPCall.CommandText = "OUT_PARAM"
SPCall.CommandType = adCmdStoredProc
' Set up parameters.
Set param1 = SPCall.CreateParameter("Median", adDouble, adParamOutput, , 0)
SPCall.Parameters.Append param1
Set param2 = SPCall.CreateParameter("ErrorCode", adInteger, adParamOutput, , 1)
SPCall.Parameters.Append param2
Set param3 = SPCall.CreateParameter("ErrorMessage", adChar, adParamOutput, 32, 2)
SPCall.Parameters.Append param3
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説: ADOアプリケーションの例(出力ストアード・プロシージャーの呼出し)
この例では、staff表を照会し、ストアード・プロシージャーのパラメーターに中央値を戻すストアード・プロシージャー"OUT_PARAM"
を呼出しています。
ストアード・プロシージャー"OUT_PARAM"のコードはサンプルとしてUDBサーバー製品に添付されています。
この例では、ADOのCommandオブジェクトとParameterオブジェクトが使用されています。
ストアード・プロシージャーをコールするとき、Parameters.Refreshメソッドはサポートされないので、この例のようにパラメーターを
明示的に作成、バインドしなければなりません。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 63-64 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
14. DB2とOLE DBデータタイプ間のマッピング(1)
OLE DBデータタイプ・インジケーター
DB2データタイプ
OLE DBスタンダードタイプ名
SMALLINT
DBTYPE_I2
"DBTYPE_I2"
INTEGER
DBTYPE_I4
"DBTYPE_I4"
BIGINT
DBTYPE_I8
"DBTYPE_I8"
REAL
DBTYPE_R4
"DBTYPE_R4"
FLOAT
DBTYPE_R8
"DBTYPE_R8"
DOUBLE
DBTYPE_R8
"DBTYPE_R8"
DECIMAL
DBTYPE_NUMERIC
"DBTYPE_NUMERIC"
NUMERIC
DBTYPE_NUMERIC
"DBTYPE_NUMERIC"
DATE
DBTYPE_DBDATE
"DBTYPE_DBDATE"
TIME
DBTYPE_DBTIME
"DBTYPE_DBTIME"
TIMESTAMP
DBTYPE_DBTIMESTAMP
"DBTYPE_DBTIMESTAMP"
CHAR
DBTYPE_STR
"DBTYPE_CHAR"
VARCHAR
DBTYPE_STR
"DBTYPE_VARCHAR"
LONG VARCHAR
DBTYPE_STR
"DBTYPE_LONGVARCHAR"
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
14. DB2とOLE DBデータタイプ間のマッピング(2)
DB2データタイプ
OLE DBデータタイプ・インジケーター
OLE DBスタンダードタイプ名
CLOB(未サポート)
DBTYPE_STR and
DBCOLUMNFLAGS_ISLONG or
DBPARAMFLAGS_ISLONG
"DBTYPE_CHAR" and
DBCOLUMNFLAGS_ISLONG or
DBPARAMFLAGS_ISLONG
GRAPHIC
DBTYPE_WSTR
"DBTYPE_WCHAR"
VARGRAPHIC
DBTYPE_WSTR
"DBTYPE_WVARCHAR"
LONG VARGRAPHIC
DBTYPE_WSTR
"DBTYPE_WLONGVARCHAR"
DBCLOB(未サポート)
DBTYPE_WSTR and
DBCOLUMNFLAGS_ISLONG or
DBPARAMFLAGS_ISLONG
"DBTYPE_WCHAR" and
DBCOLUMNFLAGS_ISLONG or
DBPARAMFLAGS_ISLONG
CHAR(n) FOR BIT DATA
DBTYPE_BYTES
"DBTYPE_BINARY"
VARCHAR(n) FOR BIT DATA
DBTYPE_BYTES
"DBTYPE_VARBINARY"
LONG VARCHAR FOR BIT DATA
DBTYPE_BYTES
"DBTYPE_LONGVARBINARY"
BLOB(未サポート)
DBTYPE_BYTES and
DBCOLUMNFLAGS_ISLONG or
DBPARAMFLAGS_ISLONG
"DBTYPE_BINARY" and
DBCOLUMNFLAGS_ISLONG or
DBPARAMFLAGS_ISLONG
DATALINK
DBTYPE_STR
"DBTYPE_CHAR"
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 65-66 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
解説: DB2とOLE DBデータタイプ間のマッピング
IBM OLE DBプロバイダー for DB2は、DB2データタイプとOLE DBデータタイプ間のマッピングをサポートします。
2001/02現在、DB2のLOB系SQLデータタイプ(BLOB、DBCLOB、CLOB)とOLE DBデータタイプ間のマッピングはサポートされてい
ません。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ブランク・ページです
AdvSQL-7 ( 67-68 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
15. 考慮点(1)
IBM OLE DBプロバイダー for DB2は、アプリケーションのスレッド・モデ
ルとして、フリー・スレッドを使ったマルチスレッドはサポートするが、ア
パートメント・スレッドやミックスド・スレッドはサポートしない
LOB系データタイプはサポートされない
Enumeratorは利用できない
IBMDADB2はITransactionLocalインターフェースではAUTOコミット(デ
フォルト)とユーザー・コントロール・トランザクションをサポートする。
ネスティッド、ディストリービューティッド、コーディネイティッド・トランザ
クションはサポートされない
IErrorInfo、IErrorRecords、ISQLErrorInfoはサポートされない。
IErrorLookUpインターフェースはサポートされる
RestartPositionはコマンド・テキストがパラメーターを含んでいた場合は
サポートされない
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
15. 考慮点(2)
IBMDADB2はDBIDパラメーター(IOpenRowsetインターフェースで使わ
れる)をパススルーしたテーブル名を引用符(quote)で囲まない。引用符
が必要ならばOLE DBコンシューマーがテーブル名に対して引用符を付
加しなければならない
シングル・パラメーター・セットのみがサポートされ、複数パラメーター・
セットはサポートされない
名前付きパラメーターはIBM OLE DBプロバイダーではサポートされな
い
ICommandWithParameters::MapParameterNamesがコールされるときは
DB_S_ERRORSOCCURREDが常に戻される。
パラメーター名はICommandWithParameters::GetParameterInfoや
ICommandWithParameters::SetParameterInfoでは無視される
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 69-70 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
解説: 考慮点
IBM OLE DBプロバイダー for DB2は、アプリケーションのスレッド・モデルとして、フリー(Free)・スレッドを使ったマルチスレッドは
サポートしますが、アパートメント(Apartment)・スレッドやミックスド(Mixed)・スレッドはサポートしません。
LOB系データタイプはサポートされません。
Enumeratorは利用できません。
IBMDADB2はITransactionLocalインターフェースではAUTOコミット(デフォルト)とユーザー・コントロール・トランザクションをサポー
トします。
ネスティッド(Nested)、ディストリービューティッド(Distributed)、コーディネイティッド(Coordinated)・トランザクションはサポートされ
ません。
IErrorInfo、IErrorRecords、ISQLErrorInfoはサポートされません。IErrorLookUpインターフェースだけがサポートさます。
RestartPositionはコマンド・テキストがパラメーターを含んでいた場合はサポートされません。
IBMDADB2はDBIDパラメーター(IOpenRowsetインターフェースで使われる)をパススルーしたテーブル名を引用符(quote)で囲まみ
ません。引用符が必要ならばOLE DBコンシューマー(=アプリケーション側)でテーブル名に対して引用符を付加してください。
シングル・パラメーター・セットのみがサポートされ、複数(Multiple)パラメーター・セットはサポートされません。
名前付きパラメーターはIBM OLE DBプロバイダーではサポートされません。
ICommandWithParameters::MapParameterNamesがコールされるときはDB_S_ERRORSOCCURREDが常に戻されます。
パラメーター名はICommandWithParameters::GetParameterInfoやICommandWithParameters::SetParameterInfoでは無視され
ます。
サポートされるスキーマ・Rowsetについては、DB2のマニュアル「Writing Applications Using the IBM OLE DB Provider for DB2」の
"Table of Supported Schema Rowset"をご参照ください。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ブランク・ページです
AdvSQL-7 ( 71-72 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
参考文献
IBM DB2 Universal Databaseマニュアル"Writing Applications Using
the IBM OLE DB Provider for DB2 Version 7"
Microsoft社 MSDNライブラリー Visual Studio 6.0
Microsoft社 Webサイト
http://www.microsoft.com
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ブランク・ページです
AdvSQL-7 ( 73-74 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
参考資料
IBM OLE DBプロバイダー for DB2のADOサポート状況
メソッド
プロパティー
コレクション
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ブランク・ページです
AdvSQL-7 ( 75-76 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
ADO Connectionメソッド・サポート状況
メソッド
OLE DB インターフェース/プロパティー
IBM OLE DBのサポート
BeginTrans
CommitTrans
RollbackTrans
ITransactionLocal
Yes(ネストは未サポート)
Yes(ネストは未サポート)
Yes(ネストは未サポート)
Execute
ICommand
IOpenRowset
Yes
Open
IDBCreateSession
IDBInitialize
Yes
OpenSchema
adSchemaColumnPrivileges
adSchemaColumns
adSchemaForeignKeys
adSchemaIndexes
adSchemaPrimaryKeys
adSchemaProcedureParam
adSchemaProcedures
adSchemaProviderType
adSchemaStatistics
adSchemaTablePrivileges
adSchemaTables
IDBSchemaRowset
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Cancel
Yes
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ADO Connectionプロパティー・サポート状況
プロパティー
Attributes
adXactCommitRetaining
adXactRollbackRetaining
CommandTimeout
ConnectionString
ConnectionTimeout
CursorLocation:
adUseClient
adUseNone
adUseSever
DefaultDatabase
IsolationLevel
Mode
adModeRead
adModeReadWrite
adModeShareDenyNone
adModeShareDenyRead
adModeShareDenyWrite
adModeShareExclusive
adModeUnknown
adModeWrite
Provider
State
Version
OLE DB インターフェース/プロパティー
ITransactionLocal
ICommandProperties
DBPROP_COMMAND_TIMEOUT
(ADO固有)
IBM OLE DBのサポート
Yes
Yes
Yes
IDBProperties
DBPROP_INIT_TIMEOUT
No
(OLE DBカーソルサービスを使用)
(使用されていない)
(Updatableカーソルは未サポート)
IDBProperties
DBPROP_CURRENTCATALOG
ITransactionLocal
DBPROP_SESS_AUTOCOMMITSOLEVEL
S
IDBProperties
DBPROP_INIT_MODE
Yes
No
Yes
No
ISourceRowset::GetSourceRowset
(ADO固有)
(ADO固有)
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 77-78 )
Yes
No
Yes
No
No
No
No
No
No
Yes
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
ADO Connectionコレクション・サポート状況
Errors
コレクション
OLE DB インターフェース/プロパティー
IErrorsRecords
Yes
Properties
IDBProperties
Yes
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ブランク・ページです
AdvSQL-7 ( 79-80 )
IBM OLE DBのサポート
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
ADO Commandメソッド・サポート状況
メソッド
Cancel
OLE DB インターフェース/プロパティー
ICommand
IBM OLE DBのサポート
Yes
CreateParameter
Yes
Execute
Yes
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ADO Commandプロパティー・サポート状況
プロパティー
ActiveConnection
OLE DB インターフェース/プロパティー
(ADO固有)
Command Text
ICommandText
Yes
Command Timeout
Yes
Command Type
ICommandProperties::SetProperties
DBPROP_COMMANDTIMEOUT
(ADO固有)
Prepared
ICommandPrepare
Yes
State
(ADO固有)
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 81-82 )
IBM OLE DBのサポート
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
ADO Commandコレクション・サポート状況
コレクション
Parameters
Properties
OLE DB インターフェース/プロパティー
ICommandWithParameter
DBSCHEMA_PROCEDURE_PARAMETERS
ICommandProperties
IDBProperties
IBM OLE DBのサポート
Yes
Yes
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ブランク・ページです
AdvSQL-7 ( 83-84 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
ADO Parameterメソッド・サポート状況
メソッド
ActiveChunk
OLE DB インターフェース/プロパティー
ISequentialStream
IBM OLE DBのサポート
Yes
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ADO Parameterプロパティー・サポート状況
プロパティー
Attributes
Direction
Name
NumericScale
Precision
Scale
Size
Type
Value
OLE DB インターフェース/プロパティー
ICommandWithParameter
DBSCHEMA_PROCEDURE_PARAMETERS
IAccessor
ICommand
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 85-86 )
IBM OLE DBのサポート
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
ADO Parameterコレクション・サポート状況
コレクション
OLE DB インターフェース/プロパティー
Properties
IBM OLE DBのサポート
Yes
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ブランク・ページです
AdvSQL-7 ( 87-88 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
ADO Recordsetメソッド・サポート状況
メソッド
IRowsetUpdate::Undo
IBM OLE DBのサポート
Yes(カーソル・サービス)
Yes
Yes(カーソル・サービス)
CancelUpdate
IDBSchemaRowset
Yes(カーソル・サービス)
Clone
Close
IRowsetLocate
IAccessor
IRowset
Yes(カーソル・サービス)
Yes
AddNew
Cancel
CancelBatch
CompareBookmarks
Delete
GetRows
OLE DB インターフェース/プロパティー
IRowsetChange
No
Yes(カーソル・サービス)
Yes(カーソル・サービス)
MoveLast
IRowsetChange
IAccessor
IRowset
IRowset
IRowsetLocate
IRowset
IRowsetLocate
IRowset
IRowsetLocate
IRowsetLocate
MovePrevious
IRowsetLocate
Yes(カーソル・サービス)
NextRecordSet
IMultipleResults
Yes
Open
Yes
Resync
ICommand
IOpenRowset
ICommand
IOpenRowset
IRowRefresh
Supports
IRowsetInfo
Yes
Update
UpdateBatch
IRowsetChange
IRowsetUpdate
Yes(カーソル・サービス)
Yes(カーソル・サービス)
Move
MoveFirst
MoveNext
Requery
サーバー・カーソル: Forwardのみ
カーソル・サービス:Scrollable
Yes(カーソル・サービス)
Yes(カーソル・サービス)
Yes(カーソル・サービス)
Yes
Yes(カーソル・サービス)
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ADO Recordsetプロパティー・サポート状況
プロパティー
AbusolutePage
AbusolutePosition
ActiveConnection
BOF
Bookmark
CacheSize
CursorType
adOpenDynamic
adOpenForwardOnly
adOpenKeySet
adOpenStatic
EditMode
EOF
Filter
LockType
MarshallOption
MaxRecords
PageCount
PageSize
Sort
Source
State
Status
OLE DB インターフェース/プロパティー
IRowsetLocate
IRowsetScroll
IRowsetLocate
IRowsetScroll
IDBCreateSession
IDBInitialize
(ADO固有)
IAccessor
IRowsetLocate
cRows in IRowsetLocate
IRowset
ICommandProperties
IRowsetUpdate
(ADO固有)
IRowsetLocate
IRowsetView
IRowsetUpdate
IViewChapter
IViewFilter
ICommandProperties
ICommandProperties
IOpenRowset
IRowsetScroll
(ADO固有)
(ADO固有)
(ADO固有)
(ADO固有)
IRowsetUpdate
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 89-90 )
IBM OLE DBのサポート
Yes(カーソル・サービス)
Yes(カーソル・サービス)
Yes
Yes(カーソル・サービス)
Yes
No
Yes
No
Yes(カーソル・サービス)
Yes(カーソル・サービス)
No
No
No
Yes
Yes(カーソル・サービス)
Yes(カーソル・サービス)
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
ADO Recordsetコレクション・サポート状況
コレクション
Fields
Properties
OLE DB インターフェース/プロパティー
IColumnInfo
ICommandProperties
IRowsetInfo::GetProperties
IBM OLE DBのサポート
Yes
Yes
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ブランク・ページです
AdvSQL-7 ( 91-92 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
ADO Fieldメソッド・サポート状況
メソッド
ActiveChunk
GetChunk
OLE DB インターフェース/プロパティー
ISequentialStream
IBM OLE DBのサポート
Yes
Yes
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ADO Fieldプロパティー・サポート状況
プロパティー
Actual Size
Attributes
DataFormat
DefinedSize
Name
NumericScale
Precision
Type
OriginalValue
UnderlyingValue
Value
OLE DB インターフェース/プロパティー
IAccessor
IRowset
IColumnInfo
IRowsetUpdate
IRowsetRefresh
IRowsetResynch
Accessor
IRowset
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
AdvSQL-7 ( 93-94 )
IBM OLE DBのサポート
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes(カーソル・サービス)
Yes(カーソル・サービス)
Yes(カーソル・サービス)
Yes
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
ADO Fieldコレクション・サポート状況
コレクション
Properties
OLE DB インターフェース/プロパティー
IDBProperties
IRowsetInfo
IBM OLE DBのサポート
Yes
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ブランク・ページです
AdvSQL-7 ( 95-96 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
ADO Errorプロパティー・サポート状況
プロパティー
Description
NativeError
Number
Source
SQLState
HelpContext
HelpFile
OLE DB インターフェース/プロパティー
IErrorRecords
IBM OLE DBのサポート
Yes
Yes
Yes
Yes
No
No
No
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ブランク・ページです
AdvSQL-7 ( 97-98 )
DB2 UDB(PC & Unix)デザイン・ガイド
別冊 アドバンストSQL編
7.外部データアクセス
ブランク・ページです
ブランク・ページです
AdvSQL-7 ( 99-100 )
Fly UP