如何在Azure Data Factory中用FETCH查询获取Dynamics CRM全字段
解决Azure Data Factory中Dynamics CRM参数化Fetch查询的问题
你的错误在于误用了语法:Dynamics CRM不支持类SQL的FETCH * FROM语句,它要求使用Fetch XML格式进行查询,报错里的XmlException也明确说明传入的内容不是合法XML结构。
正确的参数化Fetch XML构建方式
- 基础Fetch XML结构(获取指定实体所有字段):
<fetch mapping='logical'> <entity name='[实体逻辑名称]'> <all-attributes /> </entity> </fetch>
- 在ADF中通过参数拼接生成:
如果你的TableName参数直接对应实体的逻辑名称(比如account、contact),使用以下表达式:
@concat('<fetch mapping="logical"><entity name="', pipeline().parameters.TableName, '"><all-attributes /></entity></fetch>')
如果你的Domain参数是实体的前缀(比如自定义实体的new),TableName是实体核心名称(比如customer),需要拼接完整实体逻辑名称:
@concat('<fetch mapping="logical"><entity name="', pipeline().parameters.Domain, '_', pipeline().parameters.TableName, '"><all-attributes /></entity></fetch>')
额外说明
- 必须确保使用的是实体的逻辑名称(可在Dynamics CRM的高级设置-实体列表中查看),而非显示名称
- 若不需要全字段,可替换
<all-attributes />为具体字段的列表,例如:
<fetch mapping='logical'> <entity name='account'> <attribute name='name' /> <attribute name='accountid' /> </entity> </fetch>
对应的参数化表达式也可按需调整字段部分。
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

