我有一些使用未记录的Microsoft.AnalysisServices.Xmla.dll
库的C#代码,该库在SQL 2016 SSAS上运行良好。我生成 XMLA 脚本,然后执行以下操作:
XmlaClient clnt = new XmlaClient();
clnt.Connect(@"serverinstance");
string out = clnt.Send(syncxml, null);
clnt.Disconnect();
其中syncxml
是 XMLA 脚本。这已经工作了很长时间。现在,对于 SQL 2017 SSAS 实例,它会引发错误"此数据库包含当前版本的服务器或数据库的兼容级别不支持的功能"。
我将.dll升级到我能找到的最新版本(16.1.3.0),该版本肯定是在SQL 2017之后发布的。
我可以使用 SSMS 2017 毫无问题地同步模型,并且 SSMS 中的同步函数生成的脚本与给出上述错误的代码中的syncxml
相同。
我认为它一定与.dll版本有关,但我无法在这些 2017 实例中执行此操作。两者都是版本 14.0.249.2,兼容级别 1200。
更新:如果我从简单的控制台应用程序运行相同的代码,它可以工作,它已在 ASP.NET Core 应用程序中停止工作
。 神秘。我终于找到了真正的原因。我在 ASP.Net 核心Startup.cs
中有这个:
var cultureInfo = new CultureInfo("en-US");
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
在德语/英语混合环境中,这就是问题所在。删除了这些行,重新部署了应用程序,问题消失了。这显然是MS方面某个地方的错误。我注意到,因为在 SSMS 中手动运行同步以德语传递 SQL 探查器消息,但以英语传递同步失败。我从应用程序中删除了上述行,现在消息是德语的,但它可以工作。