通过链接服务器的 AAS 处理:JSON DDL 请求 - 输入字符串格式正确
AAS processing through Linked server: JSON DDL Request - Input string was on in a correct format
我们有一个设置,我们正在使用 Power BI 的 Azure 分析服务实例。这些实例通过数据网关向下连接到本地 SQL 服务器。
为了处理这些 AAS 模型,我们使用链接服务器,因为我们可以对其执行 JSON 语句并执行完整的过程。直到最近,此设置一直运行完美,没有任何问题。
错误代码是:“链接服务器“XXXX”的 OLE DB 提供程序“MSOLAP”returned 消息“JSON DDL 请求失败,出现以下错误:输入字符串格式不正确.."
我们的设置没有任何变化,只是停止工作了。我们使用的代码如下:
问题解决:
完全相同的设置适用于不同的服务器(用于丹麦部门),相同的代码和所有内容。
我可以手动处理多维数据集,所以它与网关无关,也与将数据类型解析为错误的列无关
我可以用同样的方式执行 MDX 脚本和那些 return 数据给我,所以链接服务器或 AAS 应该没有任何问题:
切换到 XMLA 没有帮助,我不确定在阅读 abit 之后可以 运行 XMLA 转向 AAS。
使用相同的设置和连接创建一个新的链接服务器出现同样的错误。
AAS兼容1465,SQL服务器14.0.3370.1
编辑 1
结果我根本无法部署到 AAS 实例,出现与 post 顶部相同的错误消息。
指出我的方向是这里的分析服务实例有问题。
此外,我无法部署到美国中北部地区的 运行ning 实例。在北欧 运行ning
实例上运行良好
免责声明:如果您想保留与链接服务器等类似的设置,则这不是解决方法。
下面是一个解决方法,它使用与链接服务器不同的设置。
这也不能解决部署问题
我最后做的是开发一个 azure 函数,它可以处理数据模型,使用这个指南和一些类似的:
https://sqldusty.com/2017/06/21/how-to-automate-processing-of-azure-analysis-services-models/
一些注意事项:
- 这样做的好处是可以在 SQL 中调用函数 URL,因此可以将其插入维护数据仓库的 SQL 代理作业的末尾举个例子。
- 我创建了一个 Http 触发器函数,所以我不必安排任何事情,但可以将查询字符串解析为函数,告诉它执行。
- 请注意,上述指南所需的运行时是 .Net 框架(即可用的最低版本)。这是在创建包含函数的函数应用程序时选择的。如果你比我更擅长 C#,那么我相信你可以做出更好的版本。
- Azure 中还有其他可能性(逻辑应用程序和 Runbook)可以执行相同的操作。我需要一个可以在 SQL 中调用的,这就是我使用上述指南的原因。
- 如果您需要更详细的指南,请告诉我:)
关于数据处理,你可以尝试创建Azure runbooks,这对我有用。我已经创建了 PowerShell 的,可以在此处找到说明 - https://sqlitybi.com/how-to-process-azure-analysis-services-tabular-models/.
部署问题如何?你在这里找到解决方案了吗?我还在为此苦苦挣扎。
我今天 运行 遇到了这个问题。查看此线程;
https://github.com/otykier/TabularEditor/issues/749
有人猜测这是微软的问题 - 请参阅评论说明;
Microsoft 知道并正在努力解决此问题。没有时间表 yet.Some 更多上下文:
大家好,有一个与对象名称引用中的特殊字符相关的回归(例如,使用某些特殊字符的 Perspective table/column 名称)。您可以通过删除数据库、删除特殊字符来解决此问题
像 '.'、'['、']'、':'、'$' 和重新部署,但我们仍在验证问题的详细信息,并希望尽快回滚回归......
编辑;
今天收到了MS的回复;
我想通知您,您的研究是正确的。是的,这是由于最近与对象名称引用中的特殊字符相关的部署而导致的回归。我们的产品团队已经确定了这种回归,并且他们已经为它创建了修复程序。此修复程序将在本周日 EOD(太平洋时间)部署到所有 Azure AS 集群。
是的,正如您所提到的,通过删除“.”、“[”、“]”、“:”、“$”等特殊字符并重新部署模型可以解决问题,但我认为这会很乏味给你的任务。因此,目前我建议的解决方法是使用 SQL Server Management Studio 中的 XMLA 脚本而不是 JSON/TOM 命令来处理您的模型。请参考以下脚本:
<Batch Transaction="false" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Refresh xmlns="http://schemas.microsoft.com/analysisservices/2014/engine">
<DatabaseID>AdventureWorsVariableException</DatabaseID>
<Model>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<xs:element>
<xs:complexType>
<xs:sequence>
<xs:element type="row"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="row">
<xs:sequence>
<xs:element name="RefreshType" type="xs:long" sql:field="RefreshType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<row xmlns="urn:schemas-microsoft-com:xml-analysis:rowset">
<RefreshType>1</RefreshType>
</row>
</Model>
</Refresh>
<SequencePoint xmlns="http://schemas.microsoft.com/analysisservices/2014/engine">
<DatabaseID>AdventureWorsVariableException</DatabaseID>
</SequencePoint>
</Batch>
我们遇到了类似的问题。我猜问题是 1 月 2 日到 3 日的 AAS 更新。问题是度量名称包含“.”。实际上,当将单个度量名称与特定的透视相关联时,它似乎只是在透视中出现问题。无论如何,我们最终用“.”重命名了所有度量名称。这为我们解决了问题。
最好的,乔纳斯
我们有一个设置,我们正在使用 Power BI 的 Azure 分析服务实例。这些实例通过数据网关向下连接到本地 SQL 服务器。 为了处理这些 AAS 模型,我们使用链接服务器,因为我们可以对其执行 JSON 语句并执行完整的过程。直到最近,此设置一直运行完美,没有任何问题。
错误代码是:“链接服务器“XXXX”的 OLE DB 提供程序“MSOLAP”returned 消息“JSON DDL 请求失败,出现以下错误:输入字符串格式不正确.."
我们的设置没有任何变化,只是停止工作了。我们使用的代码如下:
问题解决:
完全相同的设置适用于不同的服务器(用于丹麦部门),相同的代码和所有内容。
我可以手动处理多维数据集,所以它与网关无关,也与将数据类型解析为错误的列无关
我可以用同样的方式执行 MDX 脚本和那些 return 数据给我,所以链接服务器或 AAS 应该没有任何问题:
切换到 XMLA 没有帮助,我不确定在阅读 abit 之后可以 运行 XMLA 转向 AAS。
使用相同的设置和连接创建一个新的链接服务器出现同样的错误。
AAS兼容1465,SQL服务器14.0.3370.1
编辑 1
结果我根本无法部署到 AAS 实例,出现与 post 顶部相同的错误消息。 指出我的方向是这里的分析服务实例有问题。 此外,我无法部署到美国中北部地区的 运行ning 实例。在北欧 运行ning
实例上运行良好免责声明:如果您想保留与链接服务器等类似的设置,则这不是解决方法。 下面是一个解决方法,它使用与链接服务器不同的设置。 这也不能解决部署问题
我最后做的是开发一个 azure 函数,它可以处理数据模型,使用这个指南和一些类似的: https://sqldusty.com/2017/06/21/how-to-automate-processing-of-azure-analysis-services-models/
一些注意事项:
- 这样做的好处是可以在 SQL 中调用函数 URL,因此可以将其插入维护数据仓库的 SQL 代理作业的末尾举个例子。
- 我创建了一个 Http 触发器函数,所以我不必安排任何事情,但可以将查询字符串解析为函数,告诉它执行。
- 请注意,上述指南所需的运行时是 .Net 框架(即可用的最低版本)。这是在创建包含函数的函数应用程序时选择的。如果你比我更擅长 C#,那么我相信你可以做出更好的版本。
- Azure 中还有其他可能性(逻辑应用程序和 Runbook)可以执行相同的操作。我需要一个可以在 SQL 中调用的,这就是我使用上述指南的原因。
- 如果您需要更详细的指南,请告诉我:)
关于数据处理,你可以尝试创建Azure runbooks,这对我有用。我已经创建了 PowerShell 的,可以在此处找到说明 - https://sqlitybi.com/how-to-process-azure-analysis-services-tabular-models/.
部署问题如何?你在这里找到解决方案了吗?我还在为此苦苦挣扎。
我今天 运行 遇到了这个问题。查看此线程;
https://github.com/otykier/TabularEditor/issues/749
有人猜测这是微软的问题 - 请参阅评论说明;
Microsoft 知道并正在努力解决此问题。没有时间表 yet.Some 更多上下文: 大家好,有一个与对象名称引用中的特殊字符相关的回归(例如,使用某些特殊字符的 Perspective table/column 名称)。您可以通过删除数据库、删除特殊字符来解决此问题 像 '.'、'['、']'、':'、'$' 和重新部署,但我们仍在验证问题的详细信息,并希望尽快回滚回归......
编辑;
今天收到了MS的回复;
我想通知您,您的研究是正确的。是的,这是由于最近与对象名称引用中的特殊字符相关的部署而导致的回归。我们的产品团队已经确定了这种回归,并且他们已经为它创建了修复程序。此修复程序将在本周日 EOD(太平洋时间)部署到所有 Azure AS 集群。
是的,正如您所提到的,通过删除“.”、“[”、“]”、“:”、“$”等特殊字符并重新部署模型可以解决问题,但我认为这会很乏味给你的任务。因此,目前我建议的解决方法是使用 SQL Server Management Studio 中的 XMLA 脚本而不是 JSON/TOM 命令来处理您的模型。请参考以下脚本:
<Batch Transaction="false" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Refresh xmlns="http://schemas.microsoft.com/analysisservices/2014/engine">
<DatabaseID>AdventureWorsVariableException</DatabaseID>
<Model>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<xs:element>
<xs:complexType>
<xs:sequence>
<xs:element type="row"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="row">
<xs:sequence>
<xs:element name="RefreshType" type="xs:long" sql:field="RefreshType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<row xmlns="urn:schemas-microsoft-com:xml-analysis:rowset">
<RefreshType>1</RefreshType>
</row>
</Model>
</Refresh>
<SequencePoint xmlns="http://schemas.microsoft.com/analysisservices/2014/engine">
<DatabaseID>AdventureWorsVariableException</DatabaseID>
</SequencePoint>
</Batch>
我们遇到了类似的问题。我猜问题是 1 月 2 日到 3 日的 AAS 更新。问题是度量名称包含“.”。实际上,当将单个度量名称与特定的透视相关联时,它似乎只是在透视中出现问题。无论如何,我们最终用“.”重命名了所有度量名称。这为我们解决了问题。
最好的,乔纳斯