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

时间:2016-08-23 14:06:09

标签: sql-server microsoft-dynamics navision dynamics-nav-2009 microsoft-dynamics-nav

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

  

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

我已尝试使用我的开发人员许可证和客户许可证,但没有运气。由于产品不再存在,因此无需保留这些物品,我需要将它们用于升级过程。

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

更新:此问题是如何解决的? 我与产品所有者联系并解释了我的问题。他们给我发了一个简洁的PowerShell脚本来运行。这就像一个魅力。通过脚本阅读我可以看到它使用SQL cmdlet从以下SQL表中选择和删除相关数据:

  

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

这是用于开发此产品的产品所有者的首选方法。它应该适用于所有NAV对象。我还没有成功尝试下面的一个答案(更多尝试来)。希望这些新信息能够为某人提供足够的答案。

3 个答案:

答案 0 :(得分:1)

创建新的空数据库,仅从旧数据库导出所需对象,将它们导入新数据库。 在Nav 2016中,应用程序数据库可以与包含数据库的数据分开,因此(我假设)您可以使用旧对象从数据库中卸载它并将其挂载到新的应用程序数据库。不确定tbh。

答案 1 :(得分:1)

几个人成功使用的方法,但肯定不能推荐用于生产系统,只需通过SQL从Object和补充表中删除这些对象。如果是表,则需要手动删除SQL表本身及其VSIFT视图。

更好(可能)的方法是通过SQL更改对象的数量,然后通过NAV删除对象。

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

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

如果您找到可以为您提供此类杀手对象的合作伙伴(他们需要获得创建所需范围内对象的许可),它会以“干净”的方式解决您的问题。

如果没有,您可能需要考虑在某个测试数据库中创建50000范围内的空对象,通过SQL将它们的数量更改为过时范围,将它们导出为FOB,然后使用“删除”选项将它们导入目标数据库。

答案 2 :(得分:0)

这取决于许可范围,例如您的开发许可的范围表7.000.000 - 7.000.200 。如果您要删除 ID 20.000.000 的表格,则会出现该错误。

最佳解决方案是当您执行updrage时,不要考虑需要删除的这些对象。导出除要删除的对象以外的所有对象。