Консоль Sitecore Powershell — копирование элементов мультимедиа из одной базы данных в другую

Мы находимся в процессе обновления Sitecore 6.6 до 7.2. Частью обновления является перенос всех элементов мультимедиа с версии 6.6 на версию 7.2.

Я попытался создать пакет, но размер пакета слишком велик, и время установки пакета истекло.

Я нашел ссылку ниже с помощью консоли Powershell, где она показывает команду копирования элемента: http://blog.najmanowicz.com/2011/11/18/sample-scripts-for-sitecore-powershell-console

Я прикрепил версию 6.6 к версии 7.2, где я могу получить доступ к базе данных 6.6. Однако элемент копирования, похоже, не поддерживает разные базы данных.

Может ли кто-нибудь помочь, как я могу использовать SiteCore Powershell или аналогичный для переноса элементов мультимедиа с 6.6 на 7.2?


person Nil Pun    schedule 31.08.2014    source источник


Ответы (4)


У меня была аналогичная проблема с (очень большой) медиатекой с аналогичной миграцией. Пакеты, кажется, бомбят около отметки 2 ГБ, вместо этого сериализуют элементы:

  1. Удалить все из /Data/Serialization
  2. Откройте медиатеку. Убедитесь, что у вас отображается вкладка «Разработчик» (щелкните правой кнопкой мыши где-нибудь на панели инструментов и включите ее в противном случае)
  3. Выберите корневой элемент мультимедиа, затем сериализуйте дерево.
  4. Ждать...
  5. Скопируйте сериализованные файлы из /Data/Serialization на новый сервер.
  6. На панели инструментов выберите «Обновить» или «Восстановить дерево» в зависимости от ваших требований.
  7. Выгода.

Дополнительную информацию можно найти в Руководстве по сериализации Sitecore и этот пост Брайан Педерсен

Вы должны быть в состоянии сделать это и в Powershell (насколько я понимаю). Тебе следует:

  • Добавьте базу данных в свой connectionString.config
  • Добавьте эту базу данных в свой web.config в <sitecore><databases><database>. Вы можете скопировать существующий главный узел и переименовать атрибут id, чтобы он соответствовал имени вашего подключения.
  • Ваша устаревшая база данных теперь должна быть подключена к интерфейсу Sitecore, вы можете проверить ее наличие в списке выбора базы данных справа на рабочем столе.
  • Команде powershell теперь требуется местоположение «от» и «до». Предположим, что ваша база данных называется «legacy_master», должно работать следующее:

    copy-item "master:\media library\*" "legacy_master:\media library\"

person jammykam    schedule 31.08.2014
comment
Да, я вижу, насколько стар этот поток, но был бы очень признателен за помощь. Я успешно сериализовал содержимое, переместил его в файл sys нового экземпляра (azure) и попытался использовать дерево обновлений на вкладке dev. Я получаю: [InvalidOperationException: job in checkstatus] Sitecore.Shell.Applications.Dialogs.Progress.ProgressPage.CheckStatus() +365.. Похоже, задание просто умирает после нескольких минут работы, есть идеи? - person geedubb; 29.07.2020

Я нашел Hedgehog TDS (а иногда и Razl) весьма полезным для этого.

Создайте новый проект TDS (не управляйте его версиями) и загрузите все необходимые элементы на локальный компьютер. Например, вы можете подключить сборку «Отладка» к исходному экземпляру 6.6, а сборку «Выпуск» — к целевому экземпляру 7.2. Затем вы можете просто синхронизировать элементы с вашей целевой машиной. Иногда полезно синхронизировать одну или несколько ветвей за раз, если у вас соединения с длительной задержкой.

Хорошая вещь в этом заключается в том, что вы полностью контролируете свой контент и можете видеть, какие поля обновляются и т. д. Во время процесса обновления иногда бывает полезно сравнить и другие части БД, просто чтобы убедиться, что вы не пропустите любые изменения, которые вы внесли в платформу.

Поскольку я также упомянул Razl: я нашел Razl довольно хорошим, если у вас есть целая ветвь, которую, как вы знаете, следует перенести из одной базы данных в другую (например, в случае, который вы описываете). TDS немного медленнее, но более универсален — и у вас может уже быть лицензия TDS, поэтому дополнительная лицензия Razl может не стоить.

person mikaelnet    schedule 01.09.2014

Я только что добавил передачу элементов из одной БД в другую, чтобы вы могли копировать элементы между баз данных, начиная с Sitecore PowerShell Extensions 3.0. Спасибо за отличную идею!

person Adam Najmanowicz    schedule 23.02.2015

Чтобы добавить еще один параметр, вы можете выполнять подобные задачи с помощью Revolver.

ВНИМАНИЕ! Сначала попробуйте это в тестовой среде

если предположить, что:

  • элемент контекста является элементом медиатеки
  • текущая база данных является главной
  • целевая база данных называется master72

тогда что-то вроде этого должно работать:

cp -r -n master72/sitecore/
person Christian Hagelid    schedule 09.09.2014