デバイス検出の初期化が「Could not initialize 51Degrees provider for database」エラーで失敗する


解説

アナリティクス データの集約処理がスタックし、エクスペリエンス アナリティクスのレポートにデータが入力されない問題が発生する可能性があります。この問題は、破損したDeviceDetectionDBデータベース ファイルにより、Processingインスタンス上での集約処理が停止するために発生します。Processingインスタンスでは、以下の警告メッセージがログ ファイルに記録されることがあります。

7436 02:30:08 WARN  Could not initialize 51Degrees provider for database '{your_website_root}\App_Data\DeviceDetection\DeviceDetection{XX-XXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}.db'
Exception: System.IO.EndOfStreamException
Message: Unable to read beyond the end of the stream.
Source: mscorlib
at System.IO.__Error.EndOfFile()
at System.IO.BinaryReader.FillBuffer(Int32 numBytes)
at System.IO.BinaryReader.ReadInt32()
at FiftyOne.Foundation.Mobile.Detection.Factories.RootNodeFactory.Create(DataSet dataSet, Int32 index, Reader reader)
at FiftyOne.Foundation.Mobile.Detection.Entities.Memory.MemoryFixedList`2.Read(Reader reader)
at FiftyOne.Foundation.Mobile.Detection.DataSetBuilder.LoadForStreaming(IndirectDataSet dataSet, Dictionary`2 cacheConfiguration)
at FiftyOne.Foundation.Mobile.Detection.DataSetBuilder.BuildFromFile.Build(String filename)
at FiftyOne.Foundation.Mobile.Detection.Factories.StreamFactory.Create(String filePath, DateTime lastModified, Boolean isTempFile)
at Sitecore.CES.DeviceDetection.Providers.FiftyOneDegrees.ProviderFactory.CreateFromDatabase(String databasePath)
at Sitecore.CES.DeviceDetection.Providers.FiftyOneDegrees.DeviceInformationProvider51Degree.InitializeDatabase(String databaseFilePath)

解決策

解決策として、以下の手順を実施することを検討してください。

  1. 以下のフォルダーの内容物を削除します。
    {貴社websiteのrootフォルダー}\App_Data\DeviceDetection
  2. 貴社Processingインスタンスを再起動します。