コンテンツ展開のベスト プラクティス (SharePoint Server 2010)

 

適用先: SharePoint Server 2010

トピックの最終更新日: 2016-11-30

この記事は、Microsoft SharePoint Server 2010 のベスト プラクティス記事シリーズの 1 つです。この記事では、コンテンツ展開の使用に関するベスト プラクティスを説明します。コンテンツ展開に関する他の情報とリソースについては、「SharePoint Server 2010 の Web コンテンツ管理」(https://technet.microsoft.com/ja-jp/sharepoint/ff601874.aspx) を参照してください。

シリーズの他の記事については、「ベスト プラクティス (SharePoint Server 2010)」を参照してください。SharePoint Server 2010 のベスト プラクティスについての他の情報とリソースについては、「Best Practices for SharePoint Server 2010」リソース センター (英語)」(https://technet.microsoft.com/ja-jp/sharepoint/hh189420.aspx) (英語) を参照してください。

1. 展開元サーバー ファームと展開先サーバー ファームで更新プログラムを同一にする

コンテンツ展開は、展開元サーバーでの更新プログラム レベルが展開先サーバーでの更新プログラム レベルと一致している場合にのみサポートされます。コンテンツ展開ジョブが成功するよう、次のガイドラインに従ってください。

  • ファーム内のすべてのサーバーに、SharePoint Server 2010、Windows Server 2008 R2、および Windows Server 2008 SP2 の最新の更新プログラムを適用します。

    更新プログラムのレベルが異なるサーバー間でのコンテンツ展開ジョブは、修正プログラムのリリースによってエクスポート パッケージのスキーマが変更され、展開元サーバーの更新プログラム レベルが展開先サーバーより高くなっている場合、失敗する可能性があります。これは、サーバーの全体管理 Web サイトまたは Windows PowerShell の Export-SPWeb および Import-SPWeb コマンドレットのどちらを使用してコンテンツ展開ジョブを実行した場合にも該当します。

  • 展開元サイト コレクションで使用されている言語パックを、展開先ファームにもインストールする必要があります。必要な言語パックが展開先ファームにない場合、コンテンツ展開ジョブは失敗します。詳細については、「言語パックを展開する (SharePoint Server 2010)」を参照してください。

  • 展開元サーバーにカスタム コードまたはカスタム SharePoint ソリューション パッケージがある場合、これらのアイテムを展開先サーバーにも展開する必要があります。これには、展開先サーバーのグローバル アセンブリ キャッシュにインストールする必要のある .wsp ファイルに含まれていないアセンブリも含まれます。

  • 展開元サーバーにインストールされている機能がある場合は、展開先サーバーにコンテンツを展開するコンテンツ展開ジョブを実行する前に、その機能を展開先サーバーにインストールしておく必要があります。ただし、アクティブ化はしないでおきます。通常、ソリューション パッケージを展開すると、すべての機能が展開先サーバーにインストールされます。ただし, .wsp ファイルを使用していない場合は、すべての機能がインストールされ、アクティブになっていないことを確認してください。

    展開先サーバーでのインポート プロセスの間に、インポートに含まれるアイテムで必要なすべてのサイト コレクション機能がアクティブ化されます。必要な機能が展開先サーバーにインストールされていない場合、コンテンツ展開ジョブは失敗します。詳細については、「Content Deployment - Best Practices (英語)」(https://blogs.technet.com/b/stefan\_gossner/archive/2009/01/16/content-deployment-best-practices.aspx) (英語) の「Problem 9: Features used in the site collection are missing on the exporting server」を参照してください。

2. 展開先サーバーがインポート用 CAB ファイルのサイズを格納できることを確認する

コンテンツの展開では、最初にすべてのコンテンツが XML ファイルおよびバイナリ ファイルとしてファイル システムにエクスポートされた後、これらのファイルが CAB ファイルにパッケージ化されます。その後、この CAB ファイルは HTTP POST を使用して展開先サーバーにアップロードされ、抽出されてインポートされます。コンテンツ展開プロセスによって生成される CAB ファイルの事前に構成された最大サイズは、10 メガバイト (MB) です。ただし、IIS 7.0 ではアップロード制限が 28 MB に構成されています。SharePoint Server 2010 では、エクスポートされた 1 つのファイルが複数の CAB ファイルに分割されることはありません。したがって、SharePoint Server 2010 サイトに 10 MB より小さく圧縮できない単一のファイルがあり、結果の CAB ファイルのサイズが IIS 7.0 の既定のアップロード制限である 28 MB を超える場合、コンテンツ展開ジョブは失敗します。

サーバーでのコンテンツ展開ジョブで CAB ファイルのサイズが 28 MB を超える場合は、サーバーの全体管理 Web サイトの Web.config ファイルを変更して、展開先サーバーで許されるファイルのサイズを調整してください。そのためには、次のようなエントリを追加します。

<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="52428800"/>
         </requestFiltering>
    </security>
</system.webServer>

maxAllowedContentLength プロパティの値は、サーバーにアップロードされる CAB ファイルの最大サイズを表すバイト単位の数値です。この例の 52,428,800 は 50 MB です。展開環境に固有のニーズに合わせて、この値を調整する必要があります。

詳細については、KB 記事 925083 「Windows SharePoint Services 3.0 サイト上のドキュメント ライブラリにサイズの大きなファイルをアップロードしようとするとエラー メッセージ:「要求がタイムアウトしました」」(https://support.microsoft.com/kb/925083/ja-jp) を参照してください。

3. 展開先 Web アプリケーションでの最大アップロード サイズの値が展開されるファイルを格納するのに十分な大きさであることを確認する

展開先サーバーでサーバーの全体管理 Web サイトをホストする Web アプリケーションは、通常、既定の値で作成されます。つまり、最大アップロード サイズは 50 MB に設定されています。展開元サイト コレクションに展開先サーバーでのアップロード制限より大きいファイルが含まれる場合、コンテンツ展開ジョブは失敗します。

展開先サーバーでサーバーの全体管理 Web サイトをホストする Web アプリケーションの最大アップロード サイズが、展開元サイト コレクション内の最大アイテムのサイズ以上であることを確認してください。Web アプリケーションの最大アップロード サイズを変更する方法については、「Web アプリケーションの設定を構成する (SharePoint Server 2010)」を参照してください。

注意

コンテンツ展開ジョブは成功しても、サイトの一部が展開されていない場合があるので、ジョブの状態が [成功] の場合であっても、コンテンツ展開レポートで警告または非致命的エラーを確認してください。詳細については、「コンテンツ展開ジョブ レポートとジョブ履歴を表示する」を参照してください。

4. 展開元と展開先のサーバーに、エクスポートおよびインポートの間に使用されるファイルを格納するのに十分なハード ディスク領域があることを確認する

エクスポート時には、コンテンツ展開ジョブに含められるすべてのファイルがエクスポート サーバー ファーム内の一時ディレクトリに格納され、インポートのために展開先サーバーに送られる前に圧縮されます。同様に、インポート時には、データベースにインポートされるファイルが展開先サーバー ファーム内の一時ディレクトリに格納されます。既定では、圧縮されたファイルと圧縮されていないファイルは、異なるディレクトリに格納されます。それぞれのサーバー ファームの一時ディレクトリの場所に、展開ジョブに含められるファイルを収容するのに十分なディスク領域があることを確認してください。詳細については、「Content Deployment - The Complete Guide - Part 3 - Configuration (英語)」(https://blogs.technet.com/b/stefan\_gossner/archive/2009/11/02/content-deployment-the-complete-guide-part-3-configuration.aspx) (英語) の「Temporary files」を参照してください。

5. エクスポート サーバーとインポート サーバーはどちらも、サーバーの全体管理 Web サイトのインスタンスをホストしている必要がある

サーバー ファームのコンテンツ展開の設定を構成するときは、サーバー ファームのサーバーを選択して、コンテンツ展開のエクスポート サーバーおよびインポート サーバーとして指定します。サーバーの全体管理 Web サイトを、エクスポート サーバーとインポート サーバーに展開する必要があります。エクスポート サーバーまたはインポート サーバーを構成し、後でサーバーの全体管理 Web サイトを削除しても、エラー メッセージは表示されませんが、コンテンツ展開ジョブのエクスポート フェーズまたはインポート フェーズは開始しません。

6. 常に、最初のコンテンツ展開ジョブは空のサイト コレクションに展開する

既にサイト コレクションにコンテンツが含まれていると、最初のコンテンツ展開ジョブが失敗する可能性があります。展開先サーバーに空のサイト コレクションを作成するには、サーバーの全体管理の [サイト コレクションの作成] ページにある [ユーザー設定] タブで [< テンプレートを後で選択 >] オプションを使用します。コンテンツ展開ジョブの初回実行時に、適切なテンプレートと関連するすべての構成設定が展開先サーバーに適用されます。

注意

展開先サイト コレクションの作成には、空のサイト テンプレートを使用しないでください。空のサイト テンプレートによって空のサイト コレクションが作成されることはなく、コンテンツ展開ジョブの実行に失敗する場合があります。

7. コンテンツ展開ジョブの実行頻度が低い場合は、変更ログにおいて変更内容を保持する時間を調整する

既定では、変更ログはすべての変更の記録を 60 日間保持するように構成されています。2 回の増分展開ジョブの間の時間がこの時間よりも長くなると (たとえば、前回のコンテンツ展開ジョブの実行が 70 日前だった場合)、変更ログには、前回の変更トークンに基づく項目やそれ以前の項目は含まれなくなります。ジョブの実行間隔が 60 日よりも長い場合は、サーバーの全体管理で Web アプリケーションに対して指定されている日数を変更します。変更ログのエントリを保持する期間を変更する方法については、「Understand and Configure Resource Throttling on SharePoint Server 2010 (英語)」(https://technet.microsoft.com/ja-jp/magazine/gg491393.aspx) (英語) を参照してください。

8. 2 つのコンテンツ展開ジョブが同じパスを使用する場合、両方のジョブを同時に実行しない

あるジョブによる変更が、同じコンテンツ展開パスで同時に実行される別のジョブによる変更と競合するおそれがあります。その場合は、コンテンツ展開ジョブの実行に失敗する可能性があります。

9. ユーザー設定の展開ジョブとスケジュール設定したコンテンツ展開ジョブはことなるときに実行する

スケジュール設定したコンテンツ展開ジョブと、Windows PowerShell 2.0、Stsadm コマンド ライン ツール、またはカスタム コードを使用して作成したユーザー設定のコンテンツ展開ジョブを、混在させないでください。両方の種類のコンテンツ展開ジョブを同時に実行しようとすると、ジョブが失敗する場合があります。

10. 簡易展開ジョブを有効にする前にユーザーを教育する

簡易展開以外の展開ジョブによってまだ展開されていないサイト、リスト、または他のアイテムに対する参照をページ作成者がページに含めた場合、簡易展開ジョブは失敗する場合があります。ファーム内で簡易展開ジョブを有効にする場合は、コンテンツ展開プロセスについて、および組織で使用されているコンテンツ展開ジョブのタイミングと範囲について、ユーザーに理解させてください。また、簡易展開ユーザー グループのメンバーにするユーザーの数を制限することを検討します。簡易展開ジョブの詳細については、「Content Deployment – The Complete Guide – Part 5 – Quick Deployment (英語)」(https://blogs.technet.com/b/stefan\_gossner/archive/2009/11/04/content-deployment-the-complete-guide-part-5-quick-deployment.aspx) (英語) を参照してください。

11. 展開先サイトを直接編集しないようにする

コンテンツの変更を急いで展開する必要がある場合でも、展開先サイトを直接編集しないでください。次にコンテンツが展開されるときに、上書きされてしまいます。サイトを急いで更新する場合は、代わりに簡易展開ジョブを使用します。詳細については、「簡易展開ジョブを管理する」を参照してください。

12. エクスポート サーバーでは SQL Server のデータベース スナップショットを使用する

SQL Server のデータベース スナップショット オプションを使用することで、コンテンツ展開ジョブの実行中にユーザーがコンテンツ データベースのコンテンツを編集する可能性を防ぎます。データベース スナップショット オプションが有効になっている場合、コンテンツ展開ジョブのエクスポート フェーズが開始する前に、展開元コンテンツ データベースのスナップショットが作成されます。その後、コンテンツ展開ジョブは、実際に使用されているコンテンツ データベースから直接エクスポートする代わりに、データベース スナップショットを使用してエクスポートを実行します。エクスポートが正常に完了した後、スナップショットは削除されます。SQL Server データベース スナップショット オプションは、データベース サーバーが Microsoft SQL Server 2008 Enterprise を実行している場合にのみ使用できます。

13. コードをコンテンツ展開対応にする

ソリューション パッケージがコンテンツ データベースにデータを追加する機能を展開するときは、注意する必要があります。展開元ファームのコンテンツ データベースだけに、データを追加する必要があります。展開ジョブの間に、コンテンツ展開によってすべての必要なデータが展開元サイトから展開先サイトに移動されます。インポート操作の間の競合を防ぐには、展開先サイトでサイトのコンテンツを変更するすべてのカスタム イベント レシーバーまたはフィーチャー レシーバーで、SPImportContext クラスを使用する必要があります。このクラスを使用すると、イベント ハンドラーおよび機能アクティブ化コードは、インポート操作のコンテキスト内で実行しているかどうかを検出できます。このようにすると、コンテンツ展開のインポート フェーズの間に問題が発生するのを回避するコードを実装できます。たとえば、フィーチャー レシーバーに新しいアイテムをリストに追加するカスタム コードが含まれる場合、開発者は、フィーチャー レシーバーのアルゴリズムを、コンテンツ展開操作のコンテキストで実行しているかどうかを検出し、実行している場合は、検出されたロールが展開先サイトの場合にはデータの更新をスキップするように作成する必要があります。インポートの間に、新しいリスト アイテム フィーチャー レシーバーが展開先サイトでアクティブ化されます。フィーチャー レシーバーがサイトのロールを検出しないと、レシーバーは新しいコンテンツを展開先サイトに追加します。その後、インポート プロセスによって、展開元サイトから同じコンテンツのインポートが試みられます。その結果、展開先サイトでインポート エラーまたは重複するコンテンツが発生する可能性があります。フィーチャー レシーバーを作成する開発者は、この制限事項を認識し、適切なコードを作成する必要があります。詳細については、「SPImportContext Class (英語)」(https://msdn.microsoft.com/ja-jp/library/microsoft.sharepoint.deployment.spimportcontext.aspx) (英語) および「Write content deployment aware Event Handlers and Feature Activation code in SP2010 (英語)」(https://blogs.technet.com/b/stefan\_gossner/archive/2010/05/25/write-content-deployment-aware-event-handlers-and-feature-activation-code-in-sp2010.aspx) (英語) を参照してください。

謝辞

The SharePoint Server 2010 Content Publishing チームは、この記事の作成に協力していただいた以下の方々に感謝の意を表します。

  • Ethan Gur-Esh (Microsoft Enterprise Content Management)

  • Israel Vega, Jr. (Microsoft Consulting Services)

  • Josh Stickler (Microsoft Enterprise Content Management)

  • Stefan Goβner (Microsoft SharePoint Escalation Services)

  • Steve Walker (Microsoft SharePoint Customer Advisory Team)

See Also

Concepts

ベスト プラクティス (SharePoint Server 2010)