我已经学过几个教程,实际上还有其他活动在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:
找到this post并按照github repo上的说明操作后,我就可以调试我的活动了。
这是错误的Dataset inputDataset = datasets.Single(dataset => dataset.Name == activity.Inputs.Single().Name);
我希望它完成执行时出错,但是在调试器中,它会继续运行,直到管道超时为止。奇怪的。
删除了错误但仍然管道永远不会完成虽然调试器现在做了:(。
更新2:
不确定数据工厂是否以任何方式使用自定义活动中的代码。我做了更改:没有,我用代码删除了zip文件:没有,只是说活动正在运行。即使所谓的代码不再存在,似乎没有任何改变。我假设它被缓存在某个地方。
答案 0 :(得分:0)
你能和我分享一下ADF runId,我们可以看看那里发生了什么。 对于你的本地测试(#1),对我来说也很奇怪。它不应该挂在那里。 顺便说一句,我认为重新部署管道将取消运行并使用新属性启动新运行。 :)