FAQ : ビジネス データ カタログ

ここでは、ビジネス データ カタログおよびビジネス データ機能を使用する際によくある質問に対する回答を示します。このトピックは未完成であり、新しい質問により定期的に更新されます。

質問 : メタデータを追加しましたが、エンティティの選択でエンティティが表示されません。

質問 : BdcMetadata.XSD ファイルはどこにありますか。

質問 : ビジネス データ カタログ オブジェクト モデルの "アプリケーション レジストリ" とは何ですか。

質問 : バックエンドのメソッドの呼び出しからセキュリティトリミングされた結果を取得するにはどうしたらよいですか。

質問 : アプリケーションに対する権限を付与することなくエンティティに "表示" 権限を付与するシナリオとはどのようなものですか。

質問 : メタデータで GUID を使用できますか。

質問 : サーバー ログはどこにありますか。エラーのトラブルシューティングにどのように使用できますか。

質問 : 画像データを格納している BLOB 型のデータベース フィールドを、ビジネス データ カタログを介して表示するにはどうしたらよいですか。

質問 : 1 つのアプリケーション定義ファイルで、データベースまたは Web サービスに対する複数の接続を使用できますか。異なるアプリケーション定義ファイルの中にあるエンティティを関連付けることができますか。

質問 : Business Data Picker ダイアログで複数のフィールドを表示するにはどうすればよいですか。

質問 : メタデータを追加しましたが、エンティティの選択でエンティティが表示されません。

リスト内のビジネス データやビジネス データ Web パーツは、ビジネス データ カタログの権限によって使用可能になります。クライアントでエンティティを使用するために必要な最小限の権限は "クライアントで選択可能" 権限です。

注意   ビジネス データ カタログはサイト コレクション間で共有される共有サービスなので、サイト コレクション レベルのセキュリティ設定を適用することはできません。このため、サイト設定とビジネス データ カタログの権限はあまり関係がありません。

質問 : BdcMetadata.XSD ファイルはどこにありますか。

ビジネス データ カタログには XML ファイルで使用できるスキーマを定義するスキーマ定義ファイル (XSD) があり、これによってビジネス アプリケーションのメタデータを定義します。XML ドキュメントはこのスキーマに準拠する必要があります。

BdcMetadata.XSD ファイルは Microsoft Office SharePoint Server 2007 インストールの \Bin directory にあります (通常は <Root>\Program Files\Microsoft Office Server\12.0\Bin)。

Microsoft Visual Studio 2005 でメタデータを作成する場合は, .xsd ファイルを作業フォルダにコピーし、XML ファイルの SchemaReference 属性が作業フォルダの .xsd ファイルをポイントするように設定します。この結果、編集作業を大幅に簡易化する IntelliSense が Visual Studio により提供されます。

質問 : ビジネス データ カタログ オブジェクト モデルの "アプリケーション レジストリ" とは何ですか。

ビジネス データ カタログの元の名前は "アプリケーション レジストリ" でした。これが、名前空間名およびオブジェクト モデルに "アプリケーション レジストリ" を見かける理由です。これらのコンテキストで "アプリケーション レジストリ" という名前を見かけたら、これはビジネス データ カタログと同じであると見なすことができます。

質問 : バックエンドのメソッドの呼び出しからセキュリティトリミングされた結果を取得するにはどうしたらよいですか。

詳細については、「ビジネス データ カタログのセキュリティ トリマ」および「AccessChecker サンプル」を参照してください。

UserContextフィルタは、メソッドから返されるインスタンスを現在のユーザーのコンテキストに制限します。このフィルタはビジネス データ カタログに、現在の Microsoft Windows ユーザーのドメイン名およびユーザー名をメソッド呼び出しに追加するように伝えます。

メタデータ作成者が、ユーザー制御可能フィルタとしてユーザー名をとり、機密性の高い個人データを返すメタデータを作成すると、ユーザーは他のユーザーのデータを見ることができます。これを防ぐために、UserContext フィルタを使用してユーザー名をメソッド呼び出しに渡します。

詳細については、「FilterDescriptor」を参照してください。

質問 : アプリケーションに対する権限を付与することなくエンティティに "表示" 権限を付与するシナリオとはどのようなものですか。

アプリケーションに対する権限をユーザーに付与することなく、エンティティに対する "表示" 権限をそのユーザーに付与する場合のための有効なシナリオがあります。管理の委任のケースを考えてみます。ビジネス データ カタログでは、管理者は任意のオブジェクトの管理を他のユーザーに委任することができます。たとえば、管理者 (ドメイン\admin) がドメイン\xyz にエンティティ ABC の管理を許可するとします。管理者はこれを行うために、ドメイン\xyz にエンティティ ABC に対する "権限の設定" 権限を付与します。これで、ドメイン\xyz は、そのエンティティのデータ (エンティティ インスタンス) を表示できるようにする "表示" 権限を自分自身に付与することができます。ドメイン\xyz は他のオブジェクト (アプリケーションまたはアプリケーションの他のエンティティなど) に対するその他の権限を持つ必要はありません。

ユーザーは常にすべてのメタデータ オブジェクトを表示できますが、"表示" 権限は、エンティティに関連付けられたデータを表示するユーザーの権限を制御します。アプリケーションおよびエンティティは、既定で UI で表示することができます。"表示" 権限は、エンティティまたはアプリケーション全体でメソッドを実行する "実行" 権限を持つことと同じです。

質問 : メタデータで GUID を使用できますか。

GUID はビジネス データ カタログの優れたプリミティブです。Properties、DefaultValues、および Identifiers として使用できます。

質問 : サーバー ログはどこにありますか。エラーのトラブルシューティングにどのように使用できますか。

ビジネス データ Web パーツ、ビジネス データ列、またはオブジェクト モデルを使用しようとしてエラーが発生した場合は、サーバーの全体管理で診断ログを有効にし、Windows イベント ビューアまたは統合ログ サービス (ULS) サーバー ログ ファイルを確認します。ビジネス データ カタログはメッセージとランタイム例外をイベント ログおよび ULS ログ ファイルに書き込みます。

ULS ログ ファイルにはイベント ログ情報とスタック トレースのコピーが含まれています。このため、イベント ログの方が ULS ログ ファイルよりも使いやすく理解しやすいと言えます。ただし、エラーをデバッグするための詳細情報が必要な場合は ULS ログ ファイルが便利です。

ビジネス データ カタログは 30 秒おきに ULS ログ ファイルを作成します。ログ ファイルは次のパスにあります。<drive>\Program Files\Common Files\Microsoft Shared\web server extensions\12\LOGS。ULS ログ ファイルには、ランタイム例外についての有用な情報がすべて含まれているため、問題の特定に役立ちます。ULS ログ ファイルではメッセージは分類されており、以下のフィールドが含まれます。

  • タイムスタンプ

  • PID : Web クライアント エラーが w3wp.exe PID の下に表示されます。検索およびユーザー プロファイル インポート エラーは mssdmin.exe PID の下に表示されます。

  • TIF

  • Product

  • Category : (Category フィールドはビジネス データ カタログ関連エラーの Business Data です)

  • EventID

  • Level

  • Message

  • Correlation

ビジネス データ カタログ関連メッセージを簡単に検索するには、Message フィールドで "metadataexception"、"ApplicationRegistry"、または "Exception" を検索し、次にビジネス データ カテゴリを探します。

いくつかの一般的なエラー メッセージとその対応策については、「警告とエラー メッセージ」を参照してください。

質問 : 画像データを格納している BLOB 型のデータベース フィールドを、ビジネス データ カタログを介して表示するにはどうしたらよいですか。

これはサポートされていません。SharePoint Server 2007 では、ビジネス データ カタログは、データベースに対する BLOB サポートは提供しません。

質問 : 1 つのアプリケーション定義ファイルで、データベースまたは Web サービスに対する複数の接続を使用できますか。異なるアプリケーション定義ファイルの中にあるエンティティを関連付けることができますか。

どちらも「いいえ」です。1 つのアプリケーション定義ファイルは、1 つのデータベースまたは Web サービスだけと接続できます。また、関連付けの SourceEntity オブジェクトと DestinationEntity オブジェクトはどちらも、同じ LobSystem オブジェクト内に存在する必要があります。

質問 : Business Data Picker ダイアログで複数のフィールドを表示するにはどうすればよいですか。

戻り値パラメータの必要なフィールドで、TypeDescriptor 要素の ShowInPicker プロパティを使用します。

ShowInPicker

System.Boolean

いいえ

false

true

false

戻り値パラメータのフィールドでこのプロパティが true に設定されている場合、そのフィールドはビジネス データ ピッカーに表示されます。ビジネス データ ピッカーには、"ShowInPicker" プロパティが定義されているすべてのフィールドと、タイトル フィールドが表示されます。定義されているフィールドがない場合は、識別子フィールドのみが表示されます。

次に例を示します。

         <Parameter Direction="Return" Name="Employees">
              <TypeDescriptor TypeName="System.Data.SqlClient.SqlDataReader, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" Name="EmployeeDataReader">
                <TypeDescriptors>
                  <TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="EmployeeDataRecord">
                    <TypeDescriptors>
                      <TypeDescriptor TypeName="System.Int32" IdentifierName="EmployeeId" Name="EmployeeId">
                        <Properties>
                          <Property Name="ShowInPicker" Type="System.Boolean">true</Property>
                        </Properties>
                      </TypeDescriptor>
                      <TypeDescriptor TypeName="System.String" Name="EmployeeFirstName">
                        <Properties>
                          <Property Name="ShowInPicker" Type="System.Boolean">true</Property>
                        </Properties>
                      </TypeDescriptor>
                      <TypeDescriptor TypeName="System.String" Name="EmployeeLastName">
                        <Properties>
                          <Property Name="ShowInPicker" Type="System.Boolean">true</Property>
                        </Properties>
                      </TypeDescriptor>
                      <TypeDescriptor TypeName="System.Double" Name="Telephone">
                        <Properties>
                          <Property Name="HideInItemWebPartByDefault" Type="System.Boolean">true</Property>
                          <Property Name="HideInListWebPartByDefault" Type="System.Boolean">true</Property>
                        </Properties>
                      </TypeDescriptor>
                    </TypeDescriptors>
                  </TypeDescriptor>
                </TypeDescriptors>
              </TypeDescriptor>
            </Parameter>