Microsoft Flow:用于SQL目标的字符串到GUID的转换

时间:2019-02-27 05:54:46

标签: 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字符串转换为唯一标识符?

1 个答案:

答案 0 :(得分:0)

实际上,您共享的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