Sitecore Powershell Console - Копирование элементов мультимедиа из одной БД в другую

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

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

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

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

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

4 ответа

Решение

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

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

Вы можете найти больше информации в Руководстве по Сериализации Sitecore и этой публикации Брайана Педерсена

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

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

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

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

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

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

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

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

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

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

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

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

тогда примерно так должно работать:

cp -r -n master72/sitecore/
Другие вопросы по тегам