首页 > 解决方案 > Microsoft Flow:SQL 目标的字符串到 GUID 转换

问题描述

我有一个 Microsoft Flow,我想在 Azure SQL 表中插入一条记录,但在插入从触发器生成的 GUID 时遇到问题。

截图

我正在映射的字段在我检查时似乎是 GUID 格式,但是当流程执行时,它看起来好像 GUID 在被推送到 SQL 之前被转换为字符串,这导致执行时出现以下转换错误( uniqueidentifier 类型中的目标字段):

{
"status": 400,
"message": "Microsoft SQL: Conversion failed when converting from a character 
string to uniqueidentifier.\r\nclientRequestId: c3c1acb7-ca1a-443a-ab66- 
4a42ad0d28b1",
"source": "sql-ae.azconn-ae.p.azurewebsites.net"
}

源字段输出示例:“bookableresourcebookingid”:“bd403e0b-0337-e911-a86b-000d3ad11148”

我在这里查看了有关 GUID 转换的文档,但是它们似乎都将新的 GUID 作为字符串输出,而不是执行我想要的操作,即将 GUID ID 作为唯一标识符输入到 SQL 表中。

如何将此 GUID ID 字段输入 SQL 目标唯一标识符字段/将 GUID 字符串转换为唯一标识符?

标签: sql-serverazure-logic-apps

解决方案


实际上,您共享的 GUID 值具有正确的格式,Azure SQL 应该透明地将它们从 a 转换stringuniqueidentifier. 但是,由于某种原因,它不会发生。

我建议分析目标 azure 数据库并在插入失败的表上捕获 DML 操作。

不幸的是,常规 SQL Profiler 在这种情况下将不起作用,但可以配置 SQL 审计以将 INSERTS 写入 BLOB 存储上的 XEL 文件。因此,您应该能够看到失败的确切 INSERT 语句,就像这样:

在此处输入图像描述

就其本身而言,SQL 审计是一个很大的话题,但这里有一个如何实现它的示例:使用 Blob 存储的 Azure SQL 数据库审计


推荐阅读