我试图通过Azure中的逻辑应用来解决较小的集成。
我有一个存储过程,它从数据库中选择数据并输出XML作为结果。
问题是Xml结果大约是50k行而且非常大。 我建立了一个本地网关连接,通过逻辑应用程序运行存储过程。但是当我得到结果时,它不仅会拆分大的xml,而且在大约15k行之后也会削减整个结果。
我知道我可以使用blob,这意味着我需要首先将sql-xml导出到文件中,这也意味着我需要使用像PowerShell这样的BCP以最佳方式将xml导出到文件。但是,我正试图破坏大部分的内部步骤。我希望这个解决方案尽可能是基于云的解决方案。
任何人都有解决方案吗?
答案 0 :(得分:0)
好的,所以...
我已经把它归结为两个可能的结果,为什么会出现这个问题。
第一个是我在试图打开xml im sql server时发现了这个错误。
'〜vs8D51.xml'太大而无法使用XML编辑器打开。最大文件大小为' 10' MB。请更新注册表项' HKCU \ Software \ Microsoft \ SQL Server Management Studio \ 13.0_Config \ XmlEditor \ MaxFileSizeSupportedByLanguageService'改变最大尺寸。
这让我觉得Azure Logic应用程序中的存储过程由于sql server中的限制而无法获取大于10mb的结果。
我试图在regedit中更改它,但每次重新启动sql server manager时它都会重置为10mb。
我不知道这是否是对这个问题的正确评估,但这是一个想法......
其次,一位同事告诉我他的FTP文件存在类似问题。 他说,由于在后台发生某种超时,逻辑应用程序以某种奇怪的方式得不到所有数据......
他必须以分片形式获取文件内容,并以某种方式通过逻辑应用程序的工作流将其流式传输,然后重新创建整个内容并将其保存到集成另一端的文件中。
这让我想到了这个:SQL Pagination for bulk data transfer with Logic Apps
它有效,但不是我希望它如何工作。我可以流式传输数据并将它们保存到blob,但这是来自表本身的结果,而不是相同数据的整个XML的分割部分......
任何人都知道有一种方法可以通过root标签和所有方式迭代/分页SQL中的整个XML结果吗?
答案 1 :(得分:0)
在SSMS 18中,为了保持MaxFileSizeSupportedByLanguageService
的值,我需要在C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Platform\Shell\Microsoft.XmlEditor.pkgdef
文件中编辑该键的值。