Microsoft Dynamics NAV 2009 如何删除许可证之外的对象?
Microsoft Dynamics NAV 2009 How to remove objects outside of license?
在 2009 年到 2016 年的升级过程中,我试图删除与旧停产产品相关的对象。这些对象不在许可范围内,由表格、表格和报告组成。删除时我遇到了众所周知的错误:
"You do not have permission to delete the '[object name]' Table."
我已经尝试使用我的开发人员许可证和客户许可证,但没有成功。由于该产品不再存在,因此保留这些对象没有用,我需要将它们用于升级过程。
删除不在许可证中的对象的最佳方法或技巧是什么?
更新:这个问题是如何解决的?
我联系了产品负责人并解释了我的问题。他们向 运行 发送了一个简洁的 PowerShell 脚本。这就像一个魅力。通读脚本我可以看到它正在使用 SQL cmdlet 来 select 并从以下 SQL 表中删除相关数据:
Objects, Object Metadata, Object Metadata Snapshot, Object Tracking, Object Translation, Permission.
这是开发该产品的产品负责人的首选方法。它应该适用于所有 NAV 对象。我尚未成功尝试以下答案之一(更多尝试)。希望这些新信息能为有足够知识的人提供一个好的答案。
创建新的空数据库,只从旧数据库中导出需要的对象,将它们导入到新数据库中。
在 Nav 2016 中,应用程序数据库可以与包含数据库的数据分开,因此(我假设)您可以使用旧对象将其从数据库中卸载并将其安装到新的应用程序数据库中。不确定。
这是由于许可证的范围,例如你的开发许可证的范围是tables 7.000.000 - 7.000.200。如果你想删除 ID 为 20.000.000 的 table,你就会遇到这个错误。
最好的解决办法是当你升级的时候你不考虑这些你需要删除的对象。导出除要删除的对象之外的所有对象。
被多人成功使用但肯定不能推荐用于生产系统的方法是通过 SQL 从对象和补充 table 中简单地删除这些对象。如果是 tables,您需要手动删除 SQL table 本身及其 VSIFT 视图。
更好(可能)的方法是通过SQL更改对象的数量,然后通过NAV删除对象。
最好的方法是使用 "killer objects" 的功能 - 它允许通过 FOB 导入删除对象:
http://navisionary.com/2011/11/how-to-delete-bsolete-dynamics-nav-objects/
如果您找到可以为您提供此类杀手级对象的合作伙伴(他们需要有许可证才能在所需范围内创建对象),它将以 "clean" 方式解决您的问题。
如果不是,您可能需要考虑在一些测试数据库中创建 50000 范围内的空对象,通过 SQL 将它们的数量更改为过时的范围,将它们导出为 FOB,然后将它们导入到您的目标数据库使用 "Delete" 选项。
在 2009 年到 2016 年的升级过程中,我试图删除与旧停产产品相关的对象。这些对象不在许可范围内,由表格、表格和报告组成。删除时我遇到了众所周知的错误:
"You do not have permission to delete the '[object name]' Table."
我已经尝试使用我的开发人员许可证和客户许可证,但没有成功。由于该产品不再存在,因此保留这些对象没有用,我需要将它们用于升级过程。
删除不在许可证中的对象的最佳方法或技巧是什么?
更新:这个问题是如何解决的? 我联系了产品负责人并解释了我的问题。他们向 运行 发送了一个简洁的 PowerShell 脚本。这就像一个魅力。通读脚本我可以看到它正在使用 SQL cmdlet 来 select 并从以下 SQL 表中删除相关数据:
Objects, Object Metadata, Object Metadata Snapshot, Object Tracking, Object Translation, Permission.
这是开发该产品的产品负责人的首选方法。它应该适用于所有 NAV 对象。我尚未成功尝试以下答案之一(更多尝试)。希望这些新信息能为有足够知识的人提供一个好的答案。
创建新的空数据库,只从旧数据库中导出需要的对象,将它们导入到新数据库中。 在 Nav 2016 中,应用程序数据库可以与包含数据库的数据分开,因此(我假设)您可以使用旧对象将其从数据库中卸载并将其安装到新的应用程序数据库中。不确定。
这是由于许可证的范围,例如你的开发许可证的范围是tables 7.000.000 - 7.000.200。如果你想删除 ID 为 20.000.000 的 table,你就会遇到这个错误。
最好的解决办法是当你升级的时候你不考虑这些你需要删除的对象。导出除要删除的对象之外的所有对象。
被多人成功使用但肯定不能推荐用于生产系统的方法是通过 SQL 从对象和补充 table 中简单地删除这些对象。如果是 tables,您需要手动删除 SQL table 本身及其 VSIFT 视图。
更好(可能)的方法是通过SQL更改对象的数量,然后通过NAV删除对象。
最好的方法是使用 "killer objects" 的功能 - 它允许通过 FOB 导入删除对象:
http://navisionary.com/2011/11/how-to-delete-bsolete-dynamics-nav-objects/
如果您找到可以为您提供此类杀手级对象的合作伙伴(他们需要有许可证才能在所需范围内创建对象),它将以 "clean" 方式解决您的问题。
如果不是,您可能需要考虑在一些测试数据库中创建 50000 范围内的空对象,通过 SQL 将它们的数量更改为过时的范围,将它们导出为 FOB,然后将它们导入到您的目标数据库使用 "Delete" 选项。