Context.CurrentMiningModel在UDF中返回null

时间:2012-04-02 10:40:28

标签: c# ssas sql-server-2012 adomd.net

我将Mining Structures从2008服务器迁移到2012服务器。当我在2012服务器上的DMX查询中尝试我的CLR UDF(在SQL Server 2008上运行正常)时,我收到此错误:

  

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

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

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

我的猜测是CurrentMiningModel为空,因为以下代码工作正常

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

关于如何解决这个问题的任何想法? 有人可以重现这个吗?

感谢。

更新: 由于“元数据重构”(无论这意味着......),Microsoft的联系人根据需要确认了此行为。但是,website仍有待更新。

1 个答案:

答案 0 :(得分:0)

这不是最终的答案,但这是让微软的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;  
}