Неожиданный токен UpdateOptions.ExpandFull - PullRequest
0 голосов
/ 11 ноября 2018

На основе https://docs.microsoft.com/en-us/bi-reference/tom/add-a-data-source-to-tabular-model-analysis-services-amo-tom

Я пытаюсь обновить изменения строки подключения к базе данных:

Import-Module SqlServer

$newConnectionString = "Connection Timeout=60;User Id=SOME_NEW_ID;Data Source=10.10.19.10;Persist Security Info=True;Session Character Set=UTF8"

 $svr = new-Object Microsoft.AnalysisServices.Tabular.Server
$svr.Connect("server1.domain.com")

$svr.databases[1].model.datasources[0].ConnectionString = $newConnectionString
$svr.Databases[1].model.datasources[0].Update(UpdateOptions.ExpandFull)

Но я получаю ошибки:

Неожиданный токен «UpdateOptions.ExpandFull» в выражении или заявление.

если я делаю регулярное обновление ():

$svr.Databases[1].model.datasources[0].Update()

я понял:

Ошибка вызова метода, потому что [Microsoft.AnalysisServices.Tabular.ProviderDataSource] не содержать метод с именем «Update»

и если я попробую SaveChanges():

$svr.Databases[1].Model.SaveChanges()

Я получаю эту ошибку:

При извлечении участника произошло следующее исключение "SaveChanges": "Обнаружен недопустимый тип для значения по умолчанию."

если я попробую просто ExpandFull

$svr.Databases[1].model.datasources[0].Update(ExpandFull)

я получаю

Неожиданный токен ExpandFull в выражении или операторе.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Ваша проблема в основном синтаксис проблема :

$svr.Databases[1].model.datasources[0].Update(UpdateOptions.ExpandFull)

Выше приведен вызов метода .NET , который PowerShell анализирует в выражение режим , в результате чего UpdateOptions.ExpandFull сообщает о синтаксической ошибке.

В режиме выражения:

  • ссылки на типы , такие как UpdateOptions, должны быть заключены в [...]; например, [UpdateOptions]

  • ссылки на статические элементы этого типа должны ссылаться через оператор ::; например [UpdateOptions]::ExpandFull

Тем не менее, вы должны:

  • либо: используйте полное имя типа, [Microsoft.AnalysisServices.UpdateOptions]::ExpandFull, как в полезном ответе Mötz .

  • или, в PSv5 +: поместив оператор using namespace Microsoft.AnalysisServices в начале скрипта, вы можете сделать более краткую [UpdateOptions]::ExpandFull работу.

PowerShell предлагает более удобную альтернативу , однако: вы можете просто указать символьное имя значения перечисления в виде строки - 'ExpandFull' - и PowerShell автоматически выполнит преобразование для вас:

$svr.Databases[1].model.datasources[0].Update('ExpandFull')

Вам даже не нужно знать имя типа перечисления, чтобы это работало (хотя, если вы его знаете, его использование в редакторе, поддерживающем язык, например, в Visual Studio Code, может предоставить вам IntelliSense).

0 голосов
/ 11 ноября 2018

Ошибка - способ указания перечисления для обновления.

Вы работаете напрямую с типами .NET, и вы должны понимать / знать, где находится данное перечисление. В этом случае UpdateOptions находится в пространстве имен Microsoft.AnalysisServices

Обновлено

Import-Module SqlServer

$newConnectionString = "Connection Timeout=60;User Id=SOME_NEW_ID;Data Source=10.10.19.10;Persist Security Info=True;Session Character Set=UTF8"

$svr = new-Object Microsoft.AnalysisServices.Tabular.Server
$svr.Connect("server1.domain.com")

$svr.databases[1].model.datasources[0].ConnectionString = $newConnectionString
$svr.Databases[1].Update([Microsoft.AnalysisServices.UpdateOptions]::ExpandFull)
...