Azure Logic App Sql连接器

时间:2017-08-14 19:37:42

标签: azure azure-web-app-service azure-logic-apps

我正在开发从SQL Server Db中提取CDC数据的Logic App。我正在使用Get Rows操作,但当我尝试使用过滤器查询参数时出现问题。

  • code eq '793'(作品)
  • __$operation eq '2'(不工作)
  • @{string('__$operation')} eq '2'(不工作)

我认为问题可能出在“$”字符上。

错误消息

{  
  "status": 400,  
  "message": "Syntax error at position 12 in '__$operation eq '2'' "  
}

有人可以帮助我!

2 个答案:

答案 0 :(得分:0)

  

我正在使用Get Rows操作,但当我尝试使用Filter Query参数时会出现问题。

     

我认为问题可能出在“$”字符上。

根据我的测试,如果字段/列包含$(或__)并在过滤查询中使用该字段,则可以正常使用。

enter image description here

但是,如果我将字段定义为以__$operation开头的__$,那么当我在过滤查询中使用它时会导致同样的问题。 因此,如果可能,您可以尝试修改SQL数据库中的列名。

答案 1 :(得分:0)

$是根据OData Normative的保留字符,您应该在URI形成之前对其进行百分比编码。不幸的是,我尝试了百分比编码并仍然会出现语法错误,似乎在过滤查询中不允许这样做。 enter image description here

解决方案

以下是解决方案,在Logic App中,您无法在过滤查询中使用%,因此您无法将%24用于$,而应使用{{1我现在可以成功获得结果:

enter image description here

注意一开始有三个_x0024_。如果字段/列名称中包含其他特殊字符,则可以使用此模式。例如,如果字段名称为_,其中包含空格字符,则在“筛选查询”中,您需要将其转换为Display Name

有关此编码的详细信息,请参阅Encode and Decode XML Element and Attribute Names and ID Values