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 ГБ, вместо этого сериализуют элементы:
- Удалить все из / Данные / Сериализация
- Откройте медиа-библиотеку. Убедитесь, что отображается вкладка "Разработчик" (щелкните правой кнопкой мыши где-нибудь на панели инструментов и включите ее в противном случае)
- Выберите корневой элемент мультимедиа, затем Serialize Tree
- Подождите...
- Скопируйте сериализованные файлы из /Data/Serialization на ваш новый сервер
- На панели инструментов выберите Обновить или Восстановить дерево в зависимости от ваших требований.
- Прибыль.
Вы можете найти больше информации в Руководстве по Сериализации 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/