バイナリ ラージ オブジェクト (BLOB) をクロールする

このトピックでは、Microsoft SQL Server データベースに格納されるバイナリ ラージ オブジェクト (BLOB) データをクロールする方法について説明します。

最終更新日: 2010年10月8日

適用対象: SharePoint Server 2010

Microsoft SharePoint Server 2010 の Business Data Connectivity (BDC) service では、外部システムからの BLOB データのストリーミングに便利な BLOB データ型の読み取りをサポートします。Microsoft SharePoint Server 2010 Search コネクタ フレームワークを使用して、外部システムからストリーミングされる BLOB データをクロールできます。ただし、この機能を有効にするには、BDC モデル ファイルを手動で変更する必要があります。

SQL Server データベース テーブルの BLOB データのクロール

Microsoft SQL Server データベース テーブルには、BLOB データの拡張子または MIME タイプのどちらかを指定する列が必要です。データベース テーブル スキーマにこの情報を含む列がない場合は、スキーマに追加する必要があります。以下の表は、この列を含むデータベース テーブル スキーマのサンプルと、データベース テーブルに格納されるサンプルの値を示しています。

表 1. データベース テーブル スキーマのサンプル

列の名前

データ型

Id

Int

DisplayName

nvarchar(50)

Extension

nvarchar(50)

Data

varbinary(MAX)

ContentType

nvarchar(MAX)

表 2. データベース テーブル値のサンプル

Id

表示名

拡張子

データ

コンテンツ タイプ

1

File1

.docx

0x504B…

application/vnd.openxmlformats-officedocument.wordprocessingml.document

2

File2

.doc

0xD…

application/msword

3

File3

.txt

OxE…

text/plain

クロールを有効にするための BDC モデル ファイルの変更

データベース テーブルに BLOB データの拡張子または MIME タイプ情報が含まれていることを確認したら、Microsoft SharePoint Designer 2010 を使用して、BLOB データを含むテーブルに基づく外部コンテンツ タイプを作成できます。その後、すべての操作を作成できます。詳細については、「[方法] 外部コンテンツ タイプを作成する」と「[方法] SQL Server テーブルに基づく外部コンテンツ タイプを作成する」を参照してください。

BLOB 外部コンテンツ タイプを作成したら、クロールを有効にするために BDC モデル ファイルを変更する準備が整います。SharePoint Designer 2010 ではこのような変更を行うことはできません。そのため、BDC モデル ファイルをエクスポートし、XML エディターを使用して手動で変更する必要があります。

BLOB 外部コンテンツ タイプの BDC モデル ファイルをエクスポートするには

  1. SharePoint Designer 2010 の左側のナビゲーションで [外部コンテンツ タイプ] をクリックして、そのサイトのサービス アプリケーションの BDC メタデータ ストアに定義されている外部コンテンツ タイプを表示します。

  2. [外部コンテンツ タイプ] リストで、BLOB 外部コンテンツ タイプを選択します。次に、Server リボン で [BDC モデルのエクスポート] をクリックします。

  3. [BDC モデル名] テキスト ボックスに名前を入力し、次に [OK] をクリックします。

  4. BDC モデル (.bdcm) ファイルを保存する場所を選択し、[保存] をクリックします。

BLOB 外部コンテンツ タイプのクロールを有効にするには

  1. XML エディターで、前のセクションで作成した BDC モデル ファイルを開きます。

  2. BLOB フィールドを返す新しいメソッドを作成します。以下の例に示すように、このメソッドに対して StreamAccessor 型のメソッド インスタンスを定義する必要があります。

    注意

    この例のテーブル名は Attachment です。

    <Method Name="GetData">
      <Properties>
        <Property Name="RdbCommandText" Type="System.String">SELECT Data FROM [dbo].[Attachment] WHERE [Id] = @Id </Property>
        <Property Name="RdbCommandType" Type="System.Data.CommandType, System.Data, Version=2.0.0.0, Culture=neutral, 
          PublicKeyToken=b77a5c561934e089">Text</Property>
      </Properties>
      <Parameters>
        <Parameter Direction="In" Name="@Id">
          <TypeDescriptor TypeName="System.Int32" IdentifierName="Id" Name="Id" />
        </Parameter>
        <Parameter Name="StreamData" Direction="Return">
          <TypeDescriptor TypeName="System.Data.IDataReader, System.Data, 
            Version=2.0.3600.0, Culture=neutral, 
            PublicKeyToken=b77a5c561934e089" 
            IsCollection="true" Name="DataReaderTypeDescriptorName">
            <TypeDescriptors>
              <TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, 
                Version=2.0.3600.0, 
                Culture=neutral, 
                PublicKeyToken=b77a5c561934e089" 
                Name="DataRecordTypeDescriptorName">
                <TypeDescriptors>
                  <TypeDescriptor TypeName="System.Data.SqlTypes.SqlBytes, System.Data, 
                    Version=2.0.3600.0, 
                    Culture=neutral, 
                    PublicKeyToken=b77a5c561934e089" Name="Data" />
                </TypeDescriptors>
              </TypeDescriptor>
            </TypeDescriptors>
          </TypeDescriptor>
         </Parameter>
        </Parameters>
      <MethodInstances>
        <MethodInstance Name="DataAccessor" 
          Type="StreamAccessor" 
          ReturnParameterName="StreamData" 
          ReturnTypeDescriptorName="Data">
          <Properties>
    <!-- If extension field is available-->
            <Property Name="Extension" Type="System.String">Extension</Property>
    <!--If MimeType is available-->
            <Property Name="ContentType" Type="System.String">ContentType</Property>
    <!--If attachments is to be displayed in profile pages, add the following property-->
            <Property Name="MimeTypeField" Type="System.String">ContentType</Property>
          </Properties>
        </MethodInstance>
      </MethodInstances>
    </Method>
    

    すべての BLOB の MIME タイプが同じ場合は、前の例のコード行
    <Property Name="ContentType" Type="System.String">ContentType</Property>
    を、このコード行
    <Property Name=" ContentType " Type="System.String">application/vnd.openxmlformats-officedocument.wordprocessingml.document</Property> で置き換えることができます。

  3. Business Connectivity Services サービス アプリケーションの管理 UI を使用して、モデル ファイルを再インポートします。詳細については、MSDN TechNet の「BDC モデルを管理する (SharePoint Server 2010)」を参照してください。

  4. 外部コンテンツ タイプのコンテンツ ソースを作成します。詳細については、TechNet の「コンテンツ ソースを追加、編集、または削除する (SharePoint Server 2010)」を参照してください。

  5. コンテンツ ソースのフル クロールを開始します。詳細については、TechNet の「クロールを開始、一時停止、再開、または停止する (SharePoint Server 2010)」を参照してください。

関連項目

概念

SharePoint Server Search コネクタ フレームワーク

[方法] 外部コンテンツ タイプを作成する