Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
7 years ago
Solved

Timeout at Microsoft.AnalysisServices.Tabular.Model.SaveChanges(SaveOptions saveOptions)

Hi,

 

i´m trying to refresh a PowerBI model and receive the error

Status: Error Failed to refresh the model, Exception Microsoft.AnalysisServices.OperationException: Failed to save modifications to the server. Error returned: 'Timeout expired. The timeout period elapsed prior to completion of the operation.. The exception was raised by the IDbCommand interface.

at Microsoft.AnalysisServices.Tabular.Model.SaveChanges(SaveOptions saveOptions)
at Microsoft.PowerBI.ReportServer.AsServer.TOMWrapper.RefreshModel(Database database)
at Microsoft.PowerBI.ReportServer.AsServer.AnalysisServicesServer.RefreshDatabase(String databaseName, IEnumerable`1 dataSources, String clientSessionId)
at Microsoft.PowerBI.ReportServer.WebHost.EventHandler.AnalysisServicesDataRefresh.RefreshDatabase(AsDatabaseInfo asDatabaseInfo)
at Microsoft.PowerBI.ReportServer.WebHost.EventHandler.DataRefreshScope.<>c__DisplayClass9.<ExecuteActionWithLogging>b__7()
at Microsoft.PowerBI.ReportServer.WebHost.EventHandler.DataRefreshScope.<ExecuteFuncWithLogging>d__3`1.MoveNext()

Please note that the error happens in Tabular.Model.SaveChanges and is NOT related to a specific DataSource (as the "usual" error that you find a lot of info about in the community). 

 

The error appears 60 minutes / 1 hour into the DataModelRefresh, so i´m currently guessing that the setting  "ExternalCommandTimeout" in the SSASTabluar instance that the ReportServer is using would do the trick, but how can i change it? It´s not in the file referenced here:

https://docs.microsoft.com/de-de/power-bi/report-server/scheduled-refresh-troubleshoot#analysis-services 

 

Is there something else you could suggest me to try?

 

Thank you


  • Anonymous wrote:

    Hi,

     

    yes, the msmdsrv.ini containing this setting is there, but it is explicitely stated to NOT change this file but the other one that doesn`t contain the setting:

     

    But: I just tried to add the <ExternalCommandTimeout> to the "outer" msmdsrv.ini (it´s not there initially, this is why i assumed that i cannot set it there) and set it to desired value, and on restart my changed setting also appears in the "inner" (rewritten on start of service) file.

     

    So now i just have to see if this does any good...

     


    I definitely was not talking about changing the "inner" Workspace file. As stated in the docs that gets overwritten each time the service restarts.

     

    My "outer" file already has "<ExternalCommandTimeout>" so I'm not sure why your's does not. But copying this setting to the "outer" file should work fine as long as it appears under the correct parent element.

     

    The fact that this setting was missing in your environment would explain why you were seeing the default value of 3600 seconds being applied.

5 Replies

  • There are a couple of configuration files referenced in that link you posted, one is rsreportserver.config the other is msmdsrv.ini. The ExternalCommandTimeout setting is stored in the msmdsrv.ini file (although when I checked my local May 2019 instance it was already set to 86400 seconds which is 24 hours) it is normally defaulted to 3600 for standalone SSAS instances

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hi,

       

      yes, the msmdsrv.ini containing this setting is there, but it is explicitely stated to NOT change this file but the other one that doesn`t contain the setting:

       

      But: I just tried to add the <ExternalCommandTimeout> to the "outer" msmdsrv.ini (it´s not there initially, this is why i assumed that i cannot set it there) and set it to desired value, and on restart my changed setting also appears in the "inner" (rewritten on start of service) file.

       

      So now i just have to see if this does any good...

       

      • d_gosbell's avatar
        d_gosbell
        Super User

        Anonymous wrote:

        Hi,

         

        yes, the msmdsrv.ini containing this setting is there, but it is explicitely stated to NOT change this file but the other one that doesn`t contain the setting:

         

        But: I just tried to add the <ExternalCommandTimeout> to the "outer" msmdsrv.ini (it´s not there initially, this is why i assumed that i cannot set it there) and set it to desired value, and on restart my changed setting also appears in the "inner" (rewritten on start of service) file.

         

        So now i just have to see if this does any good...

         


        I definitely was not talking about changing the "inner" Workspace file. As stated in the docs that gets overwritten each time the service restarts.

         

        My "outer" file already has "<ExternalCommandTimeout>" so I'm not sure why your's does not. But copying this setting to the "outer" file should work fine as long as it appears under the correct parent element.

         

        The fact that this setting was missing in your environment would explain why you were seeing the default value of 3600 seconds being applied.