0

在从2009年到2016年的升级过程中,我试图删除与旧的停产产品有关的对象。这些对象不在范围内或许可范围内,并且包含表格,表格和报告。当删除我面对众所周知的错误:Microsoft Dynamics NAV 2009如何删除许可证外的物体?

"You do not have permission to delete the '[object name]' Table."

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

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

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

Objects, Object Metadata, Object Metadata Snapshot, Object Tracking, Object Translation, Permission.

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

回答

1

几个人成功使用但肯定不能推荐用于生产系统的方式是简单地通过对象和补充表中的SQL删除这些对象。对于表格,您需要手动删除SQL表格本身以及其VSIFT视图。

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

最好的方法是使用“杀手对象”的功能 - 这允许通过FOB进口删除对象:如果您找到合作伙伴谁可以为您提供这样的杀手对象(

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

他们需要获得许可才能在所需范围内创建对象),它以“干净”的方式解决了问题。

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

+0

你是什么意思?提供给您的脚本直接通过SQL删除对象 - 这与我的第一段中描述的方法相同。这是有效的,但不是“官方”的。如果产品所有者提出了这种方法,我会坚持使用它。 – sergeyol

+0

是的,它使用PowerShell的SQL cmdlet来发送查询数据库。是的,这与您所描述的方法相同。在另一种情况下,你认为这些表是全部还是足够的,或者可能是需要清除的其他表?我在这里知道NAV的SQL方面存在差距。 – theschitz

+0

是的,你提供的这张桌子清单很好。如果您要删除表对象,您可能还想删除SQL中的实际表(例如[公司名称$表名])及其视图(例如[公司名称$表名$ VSIFT $ nn]),但它不是需要。 – sergeyol

1

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

0

这是由于许可证的范围,例如您的开发许可证有一系列的表7.000.000 - 7.000.200。如果你想删除一个表格ID 20.000.000你有这个错误。

最好的解决办法是,当你做updrage时,你不认为你需要删除这些对象。导出除想要删除的对象之外的所有对象。

+0

当然可以。这些问题的基础不在于许可证的对象。所以你的建议只是把对象留在数据库中?由于他们仍然在数据库中,因此不导出它们将不会执行任何操作。 – theschitz

+0

是仅在不希望删除的对象**的情况下创建新的数据库**。然后编译所有对象以检查状态,并在必要时解决问题。 –

+0

不是,答案是一样的。我不知道这个脚本是如何开发的,所以你在NAV中提到了更新的** _敏感表格_ **这样你就可以确保它会好起来的。问候。 –