sql-server - 微软流 : String to GUID conversion for SQL destination

标签 sql-server azure-logic-apps

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

Screnshot

当我检查它时,我映射的字段似乎是 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"

我查看了文档 here对于 GUID 转换,但是它们似乎都将新的 GUID 作为字符串输出,而不是做我想做的事情,即将 GUID ID 作为唯一标识符输入到 SQL 表中。

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

最佳答案

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

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

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

enter image description here

就其本身而言,SQL 审计是一个很大的话题,但这里有一个如何实现它的示例:Azure SQL database auditing using Blob Storage

关于sql-server - 微软流 : String to GUID conversion for SQL destination,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54898917/

相关文章:

sql - 如何在不显示查询结果的情况下测量查询持续时间?

azure - 在 Powershell 中修改逻辑应用连接

azure - 如果从服务总线触发逻辑应用程序,如何识别我的关联 ID 或标识符

azure - 有没有办法通过复制粘贴将分支添加到逻辑应用程序中?

c# - 什么是 sql 版本 662?

SQL:间隙和岛屿、分组日期

java - 为什么通过主键进行简单的 Hibernate findOne() 需要这么长时间?

SQL-Server查询自身结果

azure-logic-apps - Liquid - 如何在本地设置液体模板

Azure 逻辑应用 FTP 获取文件内容失败