PowerPivot のスケジュールされたデータ更新が失敗し、"操作がタイムアウトしました" というエラーが表示される

この記事は、 Rick Andring(サポートエスカレーションエンジニア) によって作成されました。

現象

1つ以上のデータソースを使用して PowerPivot ブックを作成し、そのブックを Microsoft SharePoint Server 2016 にアップロードするとします。 ブックの更新スケジュールを設定すると、次のエラーが表示され、更新が失敗します。

操作がタイムアウトしました。

更新履歴を展開すると、失敗したデータソースの更新が完全に100秒間実行されていることがわかります。

[データ更新履歴] ページ

一部のデータソースが正常に終了したか、すべてのデータソースが100秒未満に更新されると、更新が断続的に成功することがあります。

SharePoint 統合ログサービス (ULS) のログには、実際のエラーが表示されますが、原因となる意味のあるものに関連していないように見えます。

DateTime w3wp.exe (0x00000) 0x59D4 PowerPivot Service Data Refresh 99 High EXCEPTION: System.Net.WebException: The operation has timed out at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)

アプリケーションイベントログに関連付けイベント ( EventID: 5214 ) が表示されることがよくあります。

同じソースから取得している複数のブックがあり、一方のブックでデータソースの処理速度が遅くなっている場合、他のクエリが停止または低速になる (100 個を超える) と、複数のブックが失敗します。

原因

この問題は、SharePoint 2016 が1つの PowerPivot データソースを更新期間を100秒に制限するために発生します。

注意

また、データを100秒以内に更新する必要がある場合は、低速または underperforming のデータソースが原因であることもあります。 複雑なデータソースから少量のデータを取得して、クエリに時間がかかるようにする場合は、タイムアウトを増やすことが最適なオプションではない可能性があるため、別の回避策を検討することができます。

回避策

  1. クエリを最適化して実行速度を速くします。

  2. クエリのデータが減少します。

  3. データソースにハードウェアを追加して、クエリを高速に処理します。

  4. PowerShell を使用して、既定のタイムアウト設定を大きくします。

    • SharePoint 2016 管理者有効化 PowerShell プロンプトで次のコマンドを実行し、"new_time_out_value" セクションを目的のタイムアウト値に変更します。

      $farm = Get-SPFarm
      
      #The time out value "new_time_out_value" is in milliseconds, so be very careful to not set it too low!!!
      
      $farm.Properties.Add("WopiProxyRequestTimeout", new_time_out_value);
      
      $farm.Update();
      
      #to double-check the setting (make sure it is of type Int32, otherwise you will need to remove the property an add it again
      
      $farm.Properties["WopiProxyRequestTimeout"].GetType()
      
    • 次のコマンドを実行して、別の値を設定するか、設定に問題がある場合に実行します。

      $farm = Get-SPFarm
      
      $farm.properties.Remove("WopiProxyRequestTimeout")
      
      $farm.Properties.Add("WopiProxyRequestTimeout", new_time_out_value);
      
      $farm.update()
      

注意

このタイムアウト値は、自己責任で増やしてください。 新しい既定のタイムアウトが非常に低いことを認識しています。 ただし、取得するデータ量と、データを取得するために必要な時間についても注意する必要があります。 この時間を設定しすぎて、ユーザーに大量のデータの取得を許可すると、PowerPivot、SharePoint、Office Online Server のパフォーマンスに問題が発生する可能性があります。 SharePoint、SQL、および外部データソースの既定のタイムアウトによって制限されることもあります。 このタイムアウト値は、必ずしも答えになるとは限りません。 取得するデータの種類に応じて、より多くの回避策と最適化オプションがあります。