次の方法で共有


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

データベース BCS インデックス コネクタの BDC モデル ファイルを編集して SharePoint の検索 クローラーを有効化し、SQL Server データベースに格納されているバイナリ ラージ オブジェクト (BLOB) データをクロールする方法を確認します。

BLOB データのクロール

Business Data Connectivity (BDC) Service では、外部システムからの BLOB データのストリーミングに便利な BLOB データ型の読み取りをサポートします。 BLOB データ型の読み取りを使用するには、外部データを含むデータベース テーブルが BLOB データ型をサポートするように設定する必要があります。 次に、外部コンテンツ ソースの BCS インデックス コネクタの BDC モデル ファイルに StreamAccessor メソッドを追加します。

BLOB データの SQL Server データベース テーブルの構成

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

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

列の名前 データ型
ID Int
DisplayName nvarchar(50)
拡張子 nvarchar(50)
データ 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 データのクロールを有効にする

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

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

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

  1. SharePoint Designer の左側のナビゲーションで [ 外部コンテンツ タイプ] をクリックして、そのサイトのサービス アプリケーションの BDC メタデータ ストアに定義されている外部コンテンツ タイプを表示します。
  2. [ 外部コンテンツ タイプ] リストで、BLOB 外部コンテンツ タイプを選択します。 次に、サーバー リボン で [ 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>
    

    を、このコード行

    <Property Name="ContentType" Type="System.String">ContentType</Property>

    with the following line of code:

    <Property Name=" ContentType " Type="System.String">application/vnd.openxmlformats-officedocument.wordprocessingml.document</Property>

  3. Business Connectivity Services サービス アプリケーションの管理 UI を使用して、モデル ファイルを再インポートします。

  4. 外部コンテンツ タイプのコンテンツ ソースを作成します。

  5. コンテンツ ソースのフル クロールを開始します。

関連項目