Microsoft Dynamics NAV 2009如何移除许可证之外的对象



在2009年至2016年的升级过程中,我试图删除与旧停产产品相关的对象。对象不在许可范围内,由表单、表格和报告组成。当删除时,我面临着众所周知的错误:

您无权删除'[对象名称]'表。

我已经尝试了我的开发人员许可证和客户许可证,但没有运气。因为这个产品已经不存在了,所以保留这些对象是没有用的,我需要它们在升级过程中消失。

删除许可证中没有的对象时,最好的方法或技术是什么?

UPDATE:如何解决这个问题?我联系了产品负责人并解释了我的问题。他们发给我一个简洁的PowerShell脚本让我运行。这招很管用。通读脚本,我可以看到它使用SQL cmdlet从以下SQL表中选择和删除相关数据:

对象,对象元数据,对象元数据快照,对象跟踪,对象转换,权限。

这是开发该产品的产品负责人的首选方法。它应该适用于所有的导航对象。我还没有成功地尝试过下面的答案(以后会有更多的尝试)。希望这些新信息能给有足够知识的人提供一个好的答案

这种方法已经被一些人成功地使用过,但肯定不推荐用于生产系统,那就是通过SQL从Object和补充表中删除这些对象。如果是表,则需要手动删除SQL表本身以及它的VSIFT视图。

一种更好的(可能)方法是通过SQL更改对象的编号,然后通过NAV删除对象。

最好的方法是使用"杀手对象"的功能——它允许通过FOB导入删除对象:

http://navisionary.com/2011/11/how-to-delete-bsolete-dynamics-nav-objects/

如果你找到了可以为你提供这种杀手级对象的合作伙伴(他们需要有许可证才能在所需范围内创建对象),它就以一种"干净"的方式解决了你的问题。

如果没有,您可能要考虑在一些测试DB中创建50000范围内的空对象,通过SQL将它们的数量更改为过时的范围,将它们导出为FOB,然后使用"Delete"选项将它们导入到目标DB。

创建新的空数据库,只从旧数据库导出需要的对象,导入到新数据库。在Nav 2016中,应用程序数据库可以从包含数据库的数据中分离出来,所以(我假设)你可以用旧对象从数据库中卸载它,然后将其挂载到新的应用程序数据库中。不太确定。

这是由于许可证的范围,例如您的开发许可证表的范围7.000.000 - 7.000.200。如果你想删除一个ID为20.000.000的表,就会出现这个错误。

最好的解决方案是在升级时不要考虑要删除这些对象。导出除要删除的对象外的所有对象。

相关内容

  • 没有找到相关文章

最新更新