Microsoft.AnalysisServices.Tabular.JsonScripter Issue - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь вызвать Microsoft.AnalysisServices.Tabular.JsonScripter в моем скрипте Powershell для автоматической генерации скриптов базы данных CreateOrReplace для SSAS Tabular. Но я продолжаю получать следующую ошибку:

Exception calling "ScriptCreateOrReplace" with "1" argument(s): "Could not load file or assembly
'Microsoft.AnalysisServices.AppLocal.Tabular.Json, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'
or one of its dependencies. The system cannot find the file specified."
At C:\Desktop\json.ps1:10 char:1
+ [Microsoft.AnalysisServices.Tabular.JsonScripter]::ScriptCreateOrRepl ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : FileNotFoundException

Вот код, который я тестирую:

Import-Module SqlServer
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices.Tabular");
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices.Core");
$tab = "server";
$dbId = "database";
$as = New-Object Microsoft.AnalysisServices.Tabular.Server;
$as.Connect($tab);
$db = $as.Databases[$dbId];

[Microsoft.AnalysisServices.Tabular.JsonScripter]::ScriptCreateOrReplace($db);

сборки загружают следующее:

GAC    Version        Location
---    -------        --------
True   v4.0.30319     C:\windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.AnalysisServices.Tabular\v4.0_14.0.0.0__8...
True   v4.0.30319     C:\windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.AnalysisServices.Core\v4.0_14.0.0.0__8984...

, поэтому Собрания должны быть признаны, но все же жалуются на них. Что я должен делать в этом случае?

1 Ответ

1 голос
/ 30 января 2020

Я думаю, что проблема в том, что модуль SqlServer загружает свою собственную "AppLocal" версию сборок AMO. Если вы удалите первую строку из вашего скрипта, он должен работать. Вы также можете упростить это следующим образом, просто загрузив основную сборку AMO (при этом будут загружены все другие зависимости, как требуется) и просто используя Microsoft.AnalysisServices.Server для подключения вместо табличного спецификатора c class.

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices");

$tab = "localhost\tab17";

$dbId = "testing";

$as = New-Object Microsoft.AnalysisServices.Server;

$as.Connect($tab);

$db = $as.Databases[$dbId];

[Microsoft.AnalysisServices.Tabular.JsonScripter]::ScriptCreateOrReplace($db);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...