問題タブ [bdc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
547 参照

sharepoint - ソース DB から削除されたレコードを検出しない外部データ列を含む SharePoint リスト

MS SQL データベースに接続された外部データ列を含む SharePoint 2010 リストがあります。ルックアップに関してはすべてが期待どおりに機能し、DB 内のアイテムに対して行われた更新を取得しますが、DB 内でアイテムが削除された場合、リストの更新/同期では取得されません。

リフレッシュ成功。0 個のアイテムが更新されました。TEST_SharePoint_BCS に存在しないため、0 個のアイテムを更新できませんでした。

ログに次のように表示されます: ID __bg40003300 のビジネス データ アイテムの同期中にオブジェクトが見つかりません。例外 Microsoft.BusinessData.Runtime.ObjectNotFoundException: FindSpecific に Null が返されました (アイテムの読み取り操作)。

エラーを示すのは、行が返されないためです。私が混乱しているのは、更新/同期の最後に返されたメッセージが、削除されたアイテムを探していることを示しているのに、見つかったときにエラーが発生する理由です?

0 投票する
1 に答える
2002 参照

sql-server - すべてを台無しにすることなく、SharePoint 外部コンテンツ タイプの列を変更する方法は?

シナリオ 1:

行/列を返す SQL Server ストアド プロシージャがあります。次に、SP Designer (SPD) で外部コンテンツ タイプ (ECT) を作成し、Central Admin (CA) にプッシュします。CA では、権限を割り当てます。このサイトで、外部リスト (EL) を作成し、自分のデータを表示できます。すべて良い。

手順で列名を「ベンダー名」から「ベンダー」に変更します。ここで SPD に移動して ECT を変更すると、開くことができず、エラーが発生します。

「BDC Service アプリケーション Business Data Connectivity Service にアクセスできません。完全な例外テキストは次のとおりです。Xml タイプ 'List of xdt:untypedAtomic' は、Clr タイプ 'Guid' から Clr タイプ 'String' への変換をサポートしていません。」

それが私の変更と何の関係があるのか​​わかりませんでした。手順への変更を元に戻しても解決しませんでした。ECT と ET を削除して、再作成する必要がありました。しかし、それは時々再び起こりました。

シナリオ 2

それが再び起こるかどうかをテストしている間、私はそれが時々起こらないことを発見しました. 私はさまざまな問題を抱えていました。

proc でフィールドの名前を変更した後、SPD に入り、ECT を正常に開き、変更を加えて CA にプッシュしました。CA で、すべての権限が削除されていることを発見しました。これは問題です。なぜこれが起こるのですか?回避する方法は?

そのため、許可をやり直してサイトにアクセスすると、2 つの異なる「サブ」問題が発生します。

シナリオ 2 A

外部リストが破損しているため、表示または更新して新しい列名を表示することはできません。リストを削除して再作成する必要があります。これは明らかにすべてのビューを殺し、それがあったすべてのページなど、またはそれを参照するものから削除します。これは悪夢です。これを回避する方法は?私は一つの方法を考えた....につながる.

シナリオ 2 B

外部リストを作成する代わりに、Web ページを編集し、ビジネス データ リスト (BDL) Web パーツを追加して、そこに ECT を追加しました。すべてが大丈夫でした。次に、意図的にprocの列の名前を再度変更し、SPDを開き、(今回は) ECTを開いてフィールド名を更新することができました。CAにプッシュしました。すべての権限が削除されました (ため息)。それらを再度追加しました。次に、壊れた BDL で自分の Web ページにアクセスしました。Web パーツを編集したところ、データが画面に表示されるように更新できました。

しかし、古い「Vender Name」フィールドがありませんでした (名前を変更したので驚くことではありません)。しかし、新しい「ベンダー」フィールドもありませんでした。BDL Web パーツでビューを編集したところ、驚いたことに、ビューに追加できるフィールドのリストに NEITHER フィールドが含まれていませんでした。SPD で ECT を開いて、新しいフィールドが存在することを確認しました (存在していました)。ECT を CA にプッシュしたり、アクセス許可をやり直したり、BDL を編集したりしても、新しいフィールドが表示されることはありませんでした。その後、最終的に、どういうわけか、BDL ビューに追加することなく、新しいフィールドが画面に表示されました - キャッシュの問題ですか?

質問

1. 外部リストを使用して、上記の問題を回避できますか? 2. ECT が更新されるたびにアクセス許可が消えるのはなぜですか? また、これを防ぐ方法を教えてください。

ありがとう。