sql-server - 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 字符串转换为唯一标识符?
解决方案
实际上,您共享的 GUID 值具有正确的格式,Azure SQL 应该透明地将它们从 a 转换string
回uniqueidentifier
. 但是,由于某种原因,它不会发生。
我建议分析目标 azure 数据库并在插入失败的表上捕获 DML 操作。
不幸的是,常规 SQL Profiler 在这种情况下将不起作用,但可以配置 SQL 审计以将 INSERTS 写入 BLOB 存储上的 XEL 文件。因此,您应该能够看到失败的确切 INSERT 语句,就像这样:
就其本身而言,SQL 审计是一个很大的话题,但这里有一个如何实现它的示例:使用 Blob 存储的 Azure SQL 数据库审计
推荐阅读
- node.js - 抛出异常时,Sequelize 事务不回滚
- javascript - 如何获取嵌套 JSON 数组中的值
- python - 出于某种原因,我的代码认为全局变量是局部变量
- java - java.io.File.delete() 的异常返回值被忽略
- google-bigquery - 在 SSIS 到 Bigquery 的 devart 连接器存在问题
- ansible - 如何在ansible中搜索具有匹配属性的任何变量
- php - 获取谷歌日历,“服务帐户无法在没有全域授权的情况下邀请与会者。”
- c# - 如何知道我的 Linux YOCTO SDK 工具链中 Mono 项目提供了哪个 C# 编译器以及如何调用它?
- airflow-scheduler - 升级到 Airflow 1.10.10
- azure - 以编程方式将自定义范围添加到 Azure B2C