Microsoft.AnalysisServices.Tabular.JsonScripter 指的是 Json 程序集的不存在版本
Microsoft.AnalysisServices.Tabular.JsonScripter refers to nonexisting version of Json assembly
我正在尝试调用 Powershell 中的 Microsoft.AnalysisServices.Tabular.JsonScripter 方法来自动为 SSAS 表格生成 CreateOrReplace 数据库脚本。但是,当我尝试执行以下代码时,我收到一条错误消息。
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices.Tabular");
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices.Core");
$tab = "<Server>";
$dbId = "<Database>";
#$saveas = "C:\temp\{0}.dax" -f $tab.Replace('\', '_');
$as = New-Object Microsoft.AnalysisServices.Tabular.Server;
$as.Connect($tab);
$db = $as.Databases[$dbId];
[Microsoft.AnalysisServices.Tabular.JsonScripter]::ScriptCreateOrReplace($db);
Exception calling "ScriptCreateOrReplace" with "1" argument(s): "Could not load file or assembly 'Microsoft.AnalysisServices.Tabular.Json, Version=17.0.0.0,
Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified."
At line:23 char:9
+ [Microsoft.AnalysisServices.Tabular.JsonScripter]::ScriptCrea ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : FileNotFoundException
我检查了我安装了哪些版本(参考这篇文章https://docs.microsoft.com/en-us/bi-reference/tom/install-distribute-and-reference-the-tabular-object-model)并在我的 GAC 文件夹中找到了这些版本。
PS C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.AnalysisServices.Tabular> Get-ChildItem
Directory: C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.AnalysisServices.Tabular
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 20.09.2018 12:45 v4.0_13.0.0.0__89845dcd8080cc91
d----- 11.09.2018 10:06 v4.0_14.0.0.0__89845dcd8080cc91
d----- 01.07.2019 16:38 v4.0_15.0.0.0__89845dcd8080cc91
根据 MS 文档,没有版本 17.0.0.0,我很困惑为什么该方法需要这个版本,据我所知不存在。
有没有人遇到过类似的错误或发现我的方法有误?
旁注:我对Powershell和.net都不精通,对这个问题的理解很基础,所以请多多包涵。
男
我已经通过卸载最新版本的 AMO 库并回退到以前的版本解决了这个问题。同事们 运行 使用旧版本并且可以很好地执行脚本,而我是唯一一个使用最新版本并遇到问题的人。
我仍然不确定问题的原因是什么,是库中的错误还是由于我工作的环境,但我很高兴它现在可以工作了。
所以,这有效:
v4.0_14.0.0.0__89845dcd8080cc91
这不是:
v4.0_15.0.0.0__89845dcd8080cc91
我正在尝试调用 Powershell 中的 Microsoft.AnalysisServices.Tabular.JsonScripter 方法来自动为 SSAS 表格生成 CreateOrReplace 数据库脚本。但是,当我尝试执行以下代码时,我收到一条错误消息。
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices.Tabular");
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices.Core");
$tab = "<Server>";
$dbId = "<Database>";
#$saveas = "C:\temp\{0}.dax" -f $tab.Replace('\', '_');
$as = New-Object Microsoft.AnalysisServices.Tabular.Server;
$as.Connect($tab);
$db = $as.Databases[$dbId];
[Microsoft.AnalysisServices.Tabular.JsonScripter]::ScriptCreateOrReplace($db);
Exception calling "ScriptCreateOrReplace" with "1" argument(s): "Could not load file or assembly 'Microsoft.AnalysisServices.Tabular.Json, Version=17.0.0.0,
Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified."
At line:23 char:9
+ [Microsoft.AnalysisServices.Tabular.JsonScripter]::ScriptCrea ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : FileNotFoundException
我检查了我安装了哪些版本(参考这篇文章https://docs.microsoft.com/en-us/bi-reference/tom/install-distribute-and-reference-the-tabular-object-model)并在我的 GAC 文件夹中找到了这些版本。
PS C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.AnalysisServices.Tabular> Get-ChildItem
Directory: C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.AnalysisServices.Tabular
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 20.09.2018 12:45 v4.0_13.0.0.0__89845dcd8080cc91
d----- 11.09.2018 10:06 v4.0_14.0.0.0__89845dcd8080cc91
d----- 01.07.2019 16:38 v4.0_15.0.0.0__89845dcd8080cc91
根据 MS 文档,没有版本 17.0.0.0,我很困惑为什么该方法需要这个版本,据我所知不存在。
有没有人遇到过类似的错误或发现我的方法有误?
旁注:我对Powershell和.net都不精通,对这个问题的理解很基础,所以请多多包涵。
男
我已经通过卸载最新版本的 AMO 库并回退到以前的版本解决了这个问题。同事们 运行 使用旧版本并且可以很好地执行脚本,而我是唯一一个使用最新版本并遇到问题的人。
我仍然不确定问题的原因是什么,是库中的错误还是由于我工作的环境,但我很高兴它现在可以工作了。
所以,这有效:
v4.0_14.0.0.0__89845dcd8080cc91
这不是:
v4.0_15.0.0.0__89845dcd8080cc91