フィールド共有タイプが変更されたテンプレートをインストールするとデータベースが破損する可能性がある


解説

特定のフィールドの「Shard(共有)」または「Unversioned(バージョン管理なし)」プロパティの値を変更すると、変更されたテンプレートに基づくすべてのアイテムが更新され、対応するフィールド値がSitecore データベースの適切なデータ テーブル(SharedFields、UnversionedFields、またはVersionedFields)に移動されます。

しかし、パッケージのインストールの一環としてテンプレートのフィールド共有プロパティが変更された場合、関連するアイテムが適切に更新されず、対応するフィールド値が異なるSitecore データベース テーブルに配置される可能性があります。

この場合、アイテムを操作するときにさまざまな問題が発生する可能性があります。

たとえば、保存操作時にフィールド値が期待どおりに変更されなかったり、データが期待どおりに公開されなかったりする場合があります。

データ破損の修正

以前にインストールしたパッケージの1つでフィールド共有プロパティがすでに変更されている場合、以下の手順を実行してください。

注意:

  1. 以下の解決策は、SQL Server データベースにのみ適用されます。
  2. 以下の手順を実行すると、フィールド共有プロパティの変更によって影響を受けるアイテムのデータが失われる可能性があります。これは、パッケージのインストール後にこれらのアイテムに変更が加えられた場合にのみ適用されます。
    手順の最後に、確認する必要のある影響を受けるアイテムとフィールドのリストが表示されます。

解決策:

  1. 重要!ソリューションをバックアップしてください。
  2. Sitecore.Support.310642.dll アセンブリを/bin フォルダーにコピーする。
  3. Sitecore.Support.310642.config ファイルを/App_Config/Include フォルダーにコピーする。
  4. FixFieldSharing.aspx ファイルをソリューションの/sitecore/admin folder of your solution フォルダーにコピーする。
  5. <hostname>/sitecore/admin/FixFieldSharing.aspx URLを要求し、影響を受けるデータベースごとに修正プロセスを実行します。
  6. これより以前の手順で追加したすべてのファイルを削除します。

上記の手順を実行した後、すべてのフィールド値が正しい場所に保存され、パッケージのインストールによる予期されない影響が解消するはずです。

問題の防止

将来のパッケージ インストールでこの問題を防止するには、以下の手順を実行してください。

注意:以下の解決策は、SQL Server データベースにのみ適用されます。

解決策:

  1. 重要!ソリューションをバックアップしてください。
  2. Sitecore.Support.310642.dll アセンブリを/bin フォルダーにコピーする。
  3. Sitecore.Support.310642.config ファイルを/App_Config/Include フォルダーにコピーする。
  4. /sitecore/shell/Applications/Install/Dialogs/Install package/Install Package.xml ファイルで、次のノードを:
    <WizardForm Application="Tools/Installer/InstallationWizard" CodeBeside="Sitecore.Shell.Applications.Install.Dialogs.InstallPackage.InstallPackageForm,Sitecore.Client">
    次のノードで置き換えます:
    <WizardForm Application="Tools/Installer/InstallationWizard" CodeBeside="Sitecore.Support.Shell.Applications.Install.Dialogs.InstallPackage.InstallPackageForm,Sitecore.Support.310642">
  5. Sitecore.Support.310642.configの次の設定のコメントを解除します:
    <setting name="FixFieldSharing.DatabasesToMaintain" value="master, web"/>
    value 属性には、将来のパッケージのインストール後にチェックする必要があるデータベースの名前を指定できます。