2017-03-18 76 views
1

配置好Azure SQL数据库之后,我想用HTTP REST GET调用中的数据提供一些表。 我尝试过Microsoft Flow(其HTTP请求操作完全失败),我现在正在探索Azure数据工厂,但无济于事。 我现在想到的唯一方法就是配置Azure虚拟机并安装Postman与Newman。但是,我仍然需要为Azure SQL数据库创建一个Web服务接口。如何调用Web服务API并将数据路由到Azure SQL数据库?

是否Microsoft不提供HTTP调用服务来连接到Azure SQL数据库?

+0

要指定,我知道WebLinkedService,但该服务似乎不支持通过Raw,OAuth或任何基于令牌的身份验证的身份验证。我将能够设置一个自定义身份验证方法,但我需要访问HTTP标头。如何添加HTTP标头?我想你无论如何都需要它们来获取Content-Type等参数。 – MisterTuna

回答

1

几个星期前有相同的情况,我最终使用Azure函数构建API调用管理。使用Azure SDK将结果上传到例如BLOB存储或Data Lake是没有问题的。你可以添加你需要执行HTTP post操作的任何程序集。

从他们你可以很容易地将它与数据工厂拉到一个Azure SQL数据库。

1

我建议你自己写一个Azure数据工厂定制活动来实现这一点。我为最近的一个项目做了这个。

将C#类库添加到ADF解决方案中,并创建一个继承自IDotNetActivity的类。然后在IDictionary方法中,使HTTP Web请求获取数据。首先将下载的文件放置在blob存储中,然后有下游活动将数据加载到SQL DB中。

public class GetLogEntries : IDotNetActivity 
{  
    public IDictionary<string, string> Execute(
     IEnumerable<LinkedService> linkedServices, 
     IEnumerable<Dataset> datasets, 
     Activity activity, 
     IActivityLogger logger) 
    { 

等等

HttpWebResponse myHttpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 

,其中容器和文件名要用作输出等

这您可以使用ADF链接服务,对存储帐户进行身份验证,并确定是我用于数据湖的一个例子。但是blob存储几乎完全相同。

 Dataset outputDataset = datasets.Single(dataset => dataset.Name == activity.Outputs.Single().Name); 

     AzureDataLakeStoreLinkedService outputLinkedService; 

     outputLinkedService = linkedServices.First(
      linkedService => 
      linkedService.Name == 
      outputDataset.Properties.LinkedServiceName).Properties.TypeProperties 
      as AzureDataLakeStoreLinkedService; 

不要打扰输入的活动。

您还需要Azure批处理服务以处理已编译类的计算。看看我的博客文章这样做。

https://www.purplefrogsystems.com/paul/2016/11/creating-azure-data-factory-custom-activities/

希望这有助于。

相关问题