Столкновение с ошибкой Нестатический метод требует цели в SSAS TabularTMSL, Power Shell Refresh Script - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь обновить табличный куб SSAS, размещенный в Azure, с помощью сценария Power Shell TMSL с использованием модулей Runbook Azure. Для больших разделов я получаю следующую ошибку. Я пытался увеличить время ожидания Invoke-ASCmd, даже с неограниченным временем ожидания.сталкивается с этой проблемой.

failed: {"database":"DashboardName","table":"table Name,"partition":"table-CurrentMonth"} - Non-static method requires a target.   at System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target)
   at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index)
   at Microsoft.AnalysisServices.AadAuthenticator.BuildAadTokenHolderFromAuthenticationResult(Object result, AadAuthParams authParams, String dataSource, Boolean useAdalCache)
   at Microsoft.AnalysisServices.AadAuthenticator.ReAcquireToken(String refreshToken, AadAuthParams authParams, String dataSource, Boolean useAdalCache)
   at Microsoft.AnalysisServices.AadTokenHolder.GetValidAccessToken()
   at Microsoft.AnalysisServices.HttpStream.GetRequestStream(Boolean isNewXmlaRequest)
   at Microsoft.AnalysisServices.HttpStream.WaitForAndUpdateHttpResponseContainingXmlaPayload()
   at Microsoft.AnalysisServices.HttpStream.GetResponseStream()
   at Microsoft.AnalysisServices.HttpStream.GetResponseDataType()
   at Microsoft.AnalysisServices.CompressedStream.GetResponseDataType()
   at Microsoft.AnalysisServices.XmlaClient.EndRequest(Boolean useBinaryXml)
   at Microsoft.AnalysisServices.XmlaClient.SendExecuteAndReadResponse(Boolean skipResults, Boolean throwIfError, Boolean useBinaryXml)
   at Microsoft.AnalysisServices.Core.AnalysisServicesClient.Execute(String command)
   at Microsoft.AnalysisServices.Core.Server.Execute(String command)
   at Microsoft.AnalysisServices.PowerShell.Cmdlets.ExecuteScriptCommand.ExecuteQueryBatch(Server server, String queryStatement)
   at Microsoft.AnalysisServices.PowerShell.Cmdlets.ExecuteScriptCommand.ExecuteQueryBatches(Server server)
   at Microsoft.AnalysisServices.PowerShell.Cmdlets.ExecuteScriptCommand.ExecuteQuery()
   at Microsoft.AnalysisServices.PowerShell.Cmdlets.ExecuteScriptCommand.ProcessRecord()
   at System.Management.Automation.CommandProcessor.ProcessRecord()

Сценарий, используемый для обновления:

$Credential = Get-AutomationPSCredential -Name 'XXXX'
$Objects = @(
    '{"database":"Database Name","table":"tableName","partition":"CurrentMonth"}',  
    '{"database":"Database Name","table":"tableName","partition":"CurrentMonth"}',      
    '{"database":"Database Name","table":"tableName"}',
    '{"database":"Database Name","table":"tableName"}'
)
$QueryPrefix = '{"refresh":{"type":"full","objects":['
$QuerySuffix = ']}}'

for ($i = 0; $i -lt $Objects.Count ; $i++) {

    Sleep -s 5


        $Query = $QueryPrefix + $Objects[$i] + $QuerySuffix

        Invoke-ASCmd -Server "ServerName" -Database "DatabaseName" -Credential $Credential -Query $Query -ConnectionTimeout 0 -QueryTimeout 0   
}

1 Ответ

0 голосов
/ 06 июня 2018

Правильно, это заняло некоторое время, чтобы решить.У меня была такая же проблема, как и у вас.Вот некоторые из ключевых моментов, которые помогли мне решить.

В службах аналитики Azure я установил:

  • Время ожидания ExternalCommand от 3600 до 10800
  • ServerTimout от 3600 до 10800
  • ExternalConnectionTimeout от 60 до 180
  • Включил диагностику служб Analysis Services, чтобы получить лучшее представление об активности

Я также тестировал непосредственно в PowerShell, т.е. без Runbook.Я получил ту же ошибку.Затем я увеличил число служб Analysis Services до максимума, чтобы проверить время ожидания.Это тоже не имело никакого эффекта.Я быстро уменьшил его, чтобы избежать финансового краха.

Итак, службы Analysis Services работали нормально, Azure и книги запусков тоже были в порядке.Я дважды проверил модель.Это было персиковое тоже.Это заставило меня взглянуть немного за пределы служб аналитики.

Мы подключаем нашу модель к хранилищу данных SQL с терабайтами данных.Я заметил, что обновление модели перегружало хранилище данных, поэтому я увеличил DWU (производительность) в хранилище, запросы выполнялись быстрее и ошибка исчезла.

Короче говоря, при уменьшении времени загрузки из нисходящей системы ошибка исчезла.Проверьте свои источники на наличие длинных запросов и посмотрите, можете ли вы оптимизировать их (или использовать подмножество данных), чтобы увидеть, решит ли это вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...