Microsoft Dynamics NAV 2009 Как удалить объекты вне лицензии?

В процессе обновления с 2009 по 2016 год я пытаюсь удалить объекты, относящиеся к старому продукту, выпуск которого прекращен. Объекты не входят в диапазон или лицензию и состоят из форм, таблиц и отчетов. При удалении столкнулся с известной ошибкой:

"У вас нет разрешения на удаление таблицы "[имя объекта]"".

Я пробовал с моей лицензией разработчика и лицензией клиента, но безуспешно. Поскольку продукт больше не существует, нет смысла хранить эти объекты, и мне нужно, чтобы они исчезли для процесса обновления.

Каков наилучший подход или метод удаления объектов, которых нет в лицензии?

ОБНОВЛЕНИЕ: как эта проблема была решена? Я связался с владельцем продукта и объяснил свою проблему. Они прислали мне аккуратный скрипт PowerShell для запуска. Это сработало как шарм. Читая сценарий, я вижу, что он использует командлеты SQL для выбора и удаления соответствующих данных из следующих таблиц SQL:

Объекты, метаданные объекта, моментальный снимок метаданных объекта, отслеживание объекта, перевод объекта, разрешение.

Это был предпочтительный метод владельца продукта, который использовал его для разработки этого продукта. Он должен быть применим ко всем объектам NAV. Я еще не пробовал один из ответов ниже (еще больше попыток). Надеюсь, эта новая информация даст кому-то достаточно, чтобы дать хороший ответ.


person theschitz    schedule 23.08.2016    source источник


Ответы (3)


Способ, который был успешно использован несколькими людьми, но точно не может быть рекомендован для производственной системы, заключается в простом удалении этих объектов через SQL из Object и дополнительных таблиц. В случае таблиц вам нужно будет вручную удалить саму таблицу SQL, а также ее представления VSIFT.

Чуть лучше (вероятно) изменить номер объекта через SQL, а затем удалить объект через NAV.

Лучше всего использовать функционал «объектов-киллеров», которые позволяют удалять объекты через импорт FOB:

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

Если вы найдете партнера, который может предоставить вам такие убойные объекты (у них должна быть лицензия на создание объектов в нужном диапазоне), это решит вашу проблему «начисто».

Если нет, вы можете рассмотреть возможность создания пустых объектов в диапазоне 50000 в какой-либо тестовой БД, изменить их количество на устаревший диапазон через SQL, экспортировать их как FOB, а затем импортировать их в целевую БД с опцией «Удалить».

person sergeyol    schedule 25.08.2016
comment
Что ты имеешь в виду? Предоставленный вам скрипт удаляет объекты напрямую через SQL - это тот же подход, что описан в моем первом абзаце. Это действенно, но не официально. Если бы владелец продукта предложил вам этот подход, я бы придерживался его. - person sergeyol; 26.08.2016
comment
Да, он использует SQL-командлеты PowerShell для отправки запросов в базу данных. Да, это тот же подход, который вы описали. В другом сценарии вы думаете, что этих таблиц достаточно, или могут быть другие таблицы, которые необходимо очистить? Здесь есть пробел в моих знаниях SQL-стороны NAV. - person theschitz; 26.08.2016
comment
Да, этот список таблиц, который вы предоставили, хорош. Если вы удаляете табличные объекты, вы также можете удалить сами таблицы в SQL (например, [Имя компании$Имя таблицы]) и их представления (например, [Имя компании$Имя таблицы$VSIFT$nn]), но это не так. обязательный. - person sergeyol; 31.08.2016
comment
Благодарю вас! Теперь я лучше понимаю, как это работает :) - person theschitz; 31.08.2016

Создайте новую пустую базу данных, экспортируйте только необходимые объекты из старой базы данных, импортируйте их в новую базу данных. В Nav 2016 база данных приложения может быть отделена от данных, содержащих базу данных, поэтому (я полагаю) вы можете просто отключить ее от базы данных со старыми объектами и смонтировать в новую базу данных приложения. Не уверен, тбх.

person Mak Sim    schedule 23.08.2016

Это связано с диапазоном лицензии, например, ваша лицензия на разработку имеет диапазон столов 7 000 000–7 000 200. Если вы хотите удалить таблицу с ID 20.000.000, у вас есть эта ошибка.

Лучшее решение, когда вы делаете обновление, не считаете, что эти объекты нужно удалить. Экспортирует все объекты, кроме объектов, которые вы хотите удалить.

person Jonathan Bravetti    schedule 23.08.2016
comment
Да, конечно. Объекты, не имеющие лицензии, являются основой вопроса. Итак, ваше предложение состоит в том, чтобы просто оставить объекты в базе данных? Если их не экспортировать, это ничего не даст, поскольку они все еще находятся в базе данных. - person theschitz; 24.08.2016
comment
Да создать новую базу данных только с объектами, которые не нужно удалять. Затем скомпилируйте весь объект, чтобы проверить статус и при необходимости решить проблемы. - person Jonathan Bravetti; 24.08.2016
comment
Не совсем, ответ тот же. Я не знаю, как был разработан этот скрипт. Итак, вы упомянули скрипт, обновляющий конфиденциальные таблицы в NAV. Таким образом, вы убедитесь, что все будет в порядке. С уважением. - person Jonathan Bravetti; 26.08.2016