1

我已经学习了几个教程,实际上还有其他活动在 azure 数据工厂中运行。现在,特别是这个不执行任何操作,但它永远不会完成处理。在活动窗口中,尝试,它显示状态:正在运行(0% 完成)

我正在寻找一个原因,同时也在了解人们如何知道活动在这个阶段发生了什么。有没有办法调试这些东西?我将包括源代码,我敢肯定我可能遗漏了一些东西:

   public class MoveBlobsToSQLActivity : IDotNetActivity
{
    public IDictionary<string, string> Execute(
               IEnumerable<LinkedService> linkedServices, IEnumerable<Dataset> datasets, Activity activity, IActivityLogger logger)
    {
        logger.Write("Start");

        //Get extended properties
        DotNetActivity dotNetActivityPipeline = (DotNetActivity)activity.TypeProperties;

        string sliceStartString = dotNetActivityPipeline.ExtendedProperties["SliceStart"];

        //Get linked service details
        Dataset inputDataset = datasets.Single(dataset => dataset.Name == activity.Inputs.Single().Name);
        Dataset outputDataset = datasets.Single(dataset => dataset.Name == activity.Outputs.Single().Name);

        /*
            DO STUFF
        */

        logger.Write("End");

        return new Dictionary<string, string>();
    }
}

更新 1:

在找到这篇文章并按照github repo上的说明进行操作后,我能够调试我的活动。

它在这里Dataset inputDataset = datasets.Single(dataset => dataset.Name == activity.Inputs.Single().Name);出错,我本来希望它完成执行并出现错误,但在调试器中,它一直在运行,并一直运行到相同的结果,直到管道超时。诡异的。删除了错误,但尽管调试器现在可以完成,但管道仍然没有完成:(。

更新 2:

不确定数据工厂是否以任何方式使用自定义活动中的代码。我做了更改:没有,我删除了带有代码的 zip 文件:没有,只是说活动正在运行。即使假定的代码不再存在,似乎也没有任何改变。我假设它缓存在某个地方。

4

1 回答 1

0

能否分享一下 ADF runId,我们可以看看那里发生了什么。对于您的本地测试(#1),这对我来说也很奇怪。它不应该挂在那里。顺便说一句,我认为重新部署管道将取消运行并使用新属性开始新的运行。:)

于 2017-01-09T10:40:54.370 回答