[7] 外部データアクセス アドバンストSQL編 7-1.データリンク・マネージャー 7-2.OLE DBプロバイダー
by user
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 )