Context.CurrentMiningModel在UDF中返回null

本文关键字:返回 null UDF CurrentMiningModel Context | 更新日期: 2023-09-27 18:29:47

我将挖掘结构从2008服务器迁移到2012服务器。当我在2012服务器上的DMX查询中尝试我的CLR UDF(它在SQL server 2008上运行良好)时,我会得到以下错误:

调用的目标引发了异常。对象引用未设置为对象的实例。

我最初的目标是运行GetNodeDescription(…)方法。在调试问题时,我可以将问题隔离到这个UDF,它在我的SQL server 2012 上失败

[SafeToPrepare(true)]
public static string test()
{
  return Context.CurrentMiningModel.Name;
}

我的猜测是CurrentMiningModel为空,因为以下代码在中运行良好

[SafeToPrepare(true)]
public static string testUser()
{
 return Context.CurrentConnection.User.Name;
}

你知道怎么解决这个问题吗?有人能复制这个吗?

谢谢。

1月

更新:微软的一位联系人证实,由于"元数据重构"(无论这意味着什么…),这种行为符合要求。然而,该网站仍有待适当更新。

Context.CurrentMiningModel在UDF中返回null

这不是最终的答案,但它是让Microsoft的GetNodeDescription工作的一种变通方法(通过显式提供挖掘模型):

[SafeToPrepare(true)]  
public static string GetNodeDescription(string MiningModel, string nodeUniqueName)  
{  
  if (Context.ExecuteForPrepare)  
  {
    return string.Empty;  
  }  
  return Context.MiningModels[MiningModel].GetNodeFromUniqueName(nodeUniqueName).Descript‌​ion;  
}