BDC を利用して Oracle Database のレコードを検索する


SharePoint Server 2010 (SharePoint) や FAST Search Server 2010 for SharePoint (FS4SP) を利用して SQL Server のような RDBMS のレコードを検索するには、BDC (Business Data Connectivity) や JDBC を利用します。

注意 : JDBC は FS4SP でのみ利用可能です。違いは以下を参照してください
http://technet.microsoft.com/ja-jp/library/ff383278.aspx#Identify

BDC を利用する場合、検索対象の RDBMS が SQL Server の場合には、何も考えず SharePoint Designer を利用すればいいのですが、SQL Server 以外の場合にはそういうわけにもいかないので、代表的と思われる Oracle Database の場合で手順を記載します。

1. Oracle Database をインストールする

今回は、仮に新規に Oracle Database をインストールすることにします。既にインストール済みであれば飛ばしていただいて構いませんが、ここでは SCOTT スキーマの EMP 表にレコードが含まれていることを想定していますので、実環境に合わせて読み替えていただくか、スキーマや表を作成してください。
開発用に Oracle Technology Network から Oracle Database 11g Release 2 (11.2.0.1.0) for Microsoft Windows (x64) をダウンロードして、インストールしてください。今回は、併せて Unicode (AL32UTF8 キャラクタセット) のデータベースを作成しました。
なお、実際の環境を想定して、Oracle Database は SharePoint や FS4SP をインストールしたサーバーとは別の Windows Server 2008 R2 を想定しています (Linux 環境などでも問題ありません)。

image

2. Oracle Client をインストールしてテストする

開発用に Oracle Technology Network から Oracle Database 11g Release 2 Client (11.2.0.1.0) for Microsoft Windows (x64) をダウンロードして、SharePoint をインストールしたサーバーにインストールしてください。
なお、SharePoint が複数台構成の場合には、全ての SharePoint サーバーにインストールしてください。また、必ず 32-bit 版ではなく、「Microsoft Windows (x64)」のものをインストールしてください。
また、Oracle Database に TNS 名を指定して問題なく接続できる必要があります。私の環境では、C:\app\oracle\product\11.2.0\client_1\NETWORK\ADMIN\tnsnames.ora に以下のような記述を追加し、tnsping コマンドや sqlplus コマンド (sqlplus scott/tiger@ORCL) で接続できるように設定しました。

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = Oracle Database サーバー名)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.contoso.com)
    )
  )

3. Secure Store Service のターゲット アプリケーションを作成する

さぁ、この辺りから SharePoint を少しでも知らないとさっぱり理解できません。
何をするかというと、「Secure Store Service」と呼ばれる接続情報 (ユーザーやパスワード) を一元管理する機能に対して、Oracle Database に対する接続情報を新規登録する、ということになります。
まずは、接続情報をまとめて格納する箱として、ターゲット アプリケーションを作成します。

  1. [サーバーの全体管理] から、[サービス アプリケーションの管理] – [Secure Store Service] と進みます
  2. [ターゲット アプリケーションの管理] の [新規作成] をクリックします
  3. 以下の情報を入力して、「次へ」ボタンをクリックします
    ターゲット アプリケーション ID : Oracle
    表示名 : Oracle
    連絡先の電子メール : <任意> (例:admin@contoso.com)
    ターゲット アプリケーションの種類 : グループ
    ターゲット アプリケーション ページの URL : なし
    image
  4. 以下の情報を入力して、「次へ」ボタンをクリックします
    Oracle ユーザー名、ユーザー名、マスク表示チェックなし
    Oracle パスワード、パスワード、マスク表示チェックあり
    image
  5. 以下の情報を入力して、「OK」ボタンをクリックします
    ターゲット アプリケーションの管理者 : とりあえず Search Service Application 管理者
    メンバー : とりあえず Search Service Application 管理者
    image

4. Secure Store Service のターゲット アプリケーションに対する資格情報を設定する

上記 3 で作成した Secure Store Service のターゲット アプリケーションに対して資格情報 (ユーザー名とパスワード) を設定しましょう。

  1. 上記 3 で作成した Secure Store Service のターゲット アプリケーションをチェックし、[資格情報] の [設定] をクリックします
  2. Oracle ユーザー名とパスワードに、それぞれ Oracle Database の接続に利用する情報を入力 (例: 上から順に scott, tiger, tiger) し、[OK] ボタンをクリックします
    image

5. BDC モデル ファイルを作成します

対象の RDBMS からどういった SQL 文でデータを操作するか、一つ一つのデータ型は何か、などの情報を定義する BDC モデル ファイル (XML ファイル) を作成します。
ここでは、こちらから Emp.bdcm をダウンロードして、そのまま使ってください。
このファイルのベースは、TechNet ライブラリにあるものです。

[方法] Business Connectivity Services を使用して Oracle Database に接続する
http://msdn.microsoft.com/ja-jp/library/ff464424.aspx

上記からコピーした BDC モデル ファイルから、主に以下の箇所を変更しています。

  • <Property Name=”RdbConnection Data Source” Type=”System.String”> YOUR_ORACLE_NET_SERVICE_NAME_HERE</Property>
    –>
    <Property Name=”RdbConnection Data Source” Type=”System.String”>ORCL</Property>
  • <Property Name=”SsoApplicationId” Type=”System.String”> SECURESTORE_ORACLE_APP_ID_HERE</Property>
    –>
    <Property Name=”SsoApplicationId” Type=”System.String”> Oracle</Property>
  • “Server ship” のコメント アウトを有効にし、”Client Ship” およびその下の SsoProviderImplementation に関する行をコメントアウトする
  • ShowInSearchUI プロパティを追加
    <Property Name=”ShowInSearchUI” Type=”System.String”></Property>

(参考) SharePoint Server Search コネクタ フレームワークhttp://msdn.microsoft.com/ja-jp/library/ee556429.aspx

6. BDC モデル ファイルをインポートします

上記 5 で作成した BDC モデル ファイルを SharePoint に取り込みます。

  1. [サーバーの全体管理] から、[サービス アプリケーションの管理] – [Business Data Connectivity Service] と進みます
  2. [BDC モデル] – [インポート] をクリックし、以下の情報を入力して、[インポート] ボタンをクリックします
    BDC モデル ファイル : 上記 5 で作成した BDC モデル ファイルを指定
    ファイルの種類 : (そのまま)
    詳細設定 : (そのまま)
    image
  3. いくつか警告が表示されますが、今回は問題が無いので、[OK] をクリックします
    image

7. プロファイル ページの作成を有効にします

必須ではありませんが、RDBMS のレコードを検索し、検索結果ページから各レコードを参照する際に SharePoint 上のページが利用できるようにするために、プロファイル ページをまだ構成していない場合には構成しておきます。

  1. [サーバーの全体管理] から、[サービス アプリケーションの管理] – [Business Data Connectivity Service] と進みます
  2. [プロファイル ページ] – [構成] をクリックし、「プロファイル ページの作成を有効にします」をチェックの上で、「ホスト SharePoint サイトの URL」に「http://既に作成済みの SharePoint Web サイト/適当な URL」のように値を入力し、[OK] ボタンをクリックします
    image

8. プロファイル ページを作成します

上記 7 と同じく必須ではありませんが、インポートした BDC モデル ファイルによって作成された「外部コンテンツ タイプ」のプロファイル ページを作成します。

  1. [サーバーの全体管理] から、[サービス アプリケーションの管理] – [Business Data Connectivity Service] と進みます
  2. [表示] で「外部コンテンツ タイプ」を選択し、該当する外部コンテンツ タイプの名前にマウスを移動した上で、プルダウンメニューから「プロファイル ページの作成またはアップグレード」を選択します
    image
  3. ダイアログで [OK] ボタンをクリックします
    image
  4. [OK] ボタンをクリックして外部コンテンツ タイプ一覧ページに戻ってくると、[既定のアクション] 列が更新されているのがわかります
    image

ここまでで BDC モデルの作成は終了しましたので、確認したい方は SharePoint ライブラリなどで利用してみてください。以下の手順には、検索で利用する手順を示します。

9. コンテンツ ソースを作成します

クロール対象としてコンテンツ ソースを設定します。

  1. [サーバーの全体管理] から、[サービス アプリケーションの管理] – [FAST Content SSA] (FS4SP の場合) または [サーバーの全体管理] から、[サービス アプリケーションの管理] – [Search Service Application] (SharePoint の場合) に進みます
  2. 「新しいコンテンツ ソース」をクリックし、以下の情報を入力し、[OK] ボタンをクリックします
    名前 : 任意 (例: Oracle Database)
    コンテンツ ソースの種類 : 基幹業務のデータ
    選択した外部データ ソースをクロールする : チェックし、「Oracle EMP Instance」をチェックする
    image
  3. 該当するコンテンツ ソースを選択し、「フル クロールの開始」をクリックする
    image

10. 検索して確認する

クロールが終了したら検索して確認しましょう。

  1. 構築済みの検索画面に移動します
  2. 適切な検索キーワードを入力し、検索結果として出力されれば終了です
    image

差分クロールやバイナリ データを含めたクロールの設定などもありますので、条件に応じて適切に設定を行ってください。

SharePoint 2010 関連の Business Connectivity Services 技術記事
http://msdn.microsoft.com/ja-jp/library/gg481768.aspx
SharePoint Server Search コネクタ フレームワークhttp://msdn.microsoft.com/ja-jp/library/ee556429.aspx

広告