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月
更新:微软的一位联系人证实,由于"元数据重构"(无论这意味着什么…),这种行为符合要求。然而,该网站仍有待适当更新。
这不是最终的答案,但它是让Microsoft的GetNodeDescription工作的一种变通方法(通过显式提供挖掘模型):
[SafeToPrepare(true)]
public static string GetNodeDescription(string MiningModel, string nodeUniqueName)
{
if (Context.ExecuteForPrepare)
{
return string.Empty;
}
return Context.MiningModels[MiningModel].GetNodeFromUniqueName(nodeUniqueName).Description;
}