0

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

“您无权删除‘[对象名称]’表。”

我已经尝试过使用我的开发人员许可证和客户许可证,但没有成功。由于该产品不再存在,因此保留这些对象是没有用的,我需要它们在升级过程中消失。

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

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

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

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

4

3 回答 3

1

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

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

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

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

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

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

于 2016-08-25T08:48:25.293 回答
1

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

于 2016-08-23T20:37:35.357 回答
0

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

最好的解决方案是,当您进行升级时,您是否认为需要删除这些对象。导出除要删除的对象之外的所有对象。

于 2016-08-23T21:12:24.120 回答