Сама по себе миграция, на мой взгляд, никогда не проходит полностью без ошибок. В момент миграции происходят всякие изощеренные ошибки. Но даже, если при миграции не было ни одной ошибки, то будьте готовы натолкнуться на них при использовании смигрированной системы. В данной статье я опишу те ошибки, с которыми мне имело счастье столкнуться. Статья будет периодически пополняться, поэтому не прошу считать её законченной :)
Итак начнем.
Ошибки во время миграции
Во время миграции в файлах лога могут встречаться как ошибки, так и предупреждения. Давайте разберем их.
При preupgradecheck возникает ошибка InvalidDatabaseSchema
Found a missing feature Id
[powershell] [SPContentDatabaseSequence] [ERROR] [2/11/2011 5:37:26 PM]: Found a missing feature Id = [15c28c5f-c1d2-4a22-b93c-3267c4db0555]
Решение: Необходимо найти неустановленные фичи, используя запрос
DELETE FROM [WSS_Content_1000].[dbo].[Features] WHERE FeatureId in ('9500b5fd-c36c-419c-9a63-7aa43d6ca93e', 'bd3ef2d0-3590-49b5-bc85-e676d3a8ddfc') GO
Или воспользовавшись утилитой удаления фич http://featureadmin.codeplex.com/ (не смог воспользоваться, т.к. поздно встретил).
Можно также воспользоваться утилитами Forcedeletelist и Databaserepair (восстанавливает только объекты Sharepoint, если были как-то удалены родительские).
Неопределяемые веб-части
Чтобы разрешить проблемы с проблемными веб-частями, которые утилита миграция не может определить:SELECT tp_WebPartTypeId, COUNT(1), tp_Assembly, tp_Class FROM AllWebParts (NOLOCK) WHERE tp_WebPartTypeId IS NOT NULL GROUP BY tp_WebPartTypeId, tp_Assembly, tp_Class SELECT Webs.FullUrl, Webs.Title, AllDocs.DirName, AllDocs.LeafName FROM AllDocs, Sites, AllWebParts, Webs WHERE Webs.Id = Sites.RootWebId AND AllDocs.Id = AllWebParts.tp_PageUrlID AND Sites.Id = AllDocs.SiteId AND tp_WebPartTypeId IN ( SELECT DISTINCT tp_WebPartTypeId FROM AllWebParts (NOLOCK) WHERE tp_WebPartTypeId IS NOT NULL AND tp_Assembly IS NULL)
Здесь в tp_Source можно глянуть определение веб-части.
Database [xxxx] has reference(s) to a missing feature: Id = [xxxxxx]» или «WebPart class [xxx] is referenced [3] times in the database xxxx], but is not installed on the current farm...
Можно воспользоваться утилитой http://sp2010extmigrareport.codeplex.com/. На вход подается выход от команды Test-SPContentDatabase –Name <database name> -WebApplication <URL>, а на выходе получаем описание недостающих элементов. Данную утилиту надо запускать там где установлен Sharepoint 2007, а выход брать от Sharepoint 2010.
Ошибки сессии
Можно воспользоваться решением.
Если вы в своих решениях, например в веб-частях, используете сессии, то изначально в Sharepoint 2010 вы будите получать ошибки, когда попробуете воспользоваться функционалом. Для решение этой проблемы нужно выполнить в Powershell команду:
Enable-SPSessionStateService –DefaultProvision
Проверка БД:
Иногда надо проверить версию установленной БД. SELECT name AS 'DB Name', compatibility_level AS 'Compatibility Level' FROM master.sys.databases; GOПеремещение пользователей
При выполнении миграции, нужно чтобы пользователи, которые используются в БД Sharepoint 2007 были мигрированы в БД Sharepoint 2010: Перемещение имен входа и паролей между экземплярами SQL Server 2005 и Перемещение имен пользователей и паролей между экземплярами SQL Server
Object reference not set to an instance of an object
Если появляется ошибка во время операции Mount-SPContentDatabase
[powershell] [SPWebTemplateSequence] [ERROR] [14.03.2011 15:17:00]: Template MPS#0: SPWeb Id=4fa62de1-47c7-47af-9009-40a80b34a2b2 could not be accessed in SPSite Id=f1a0f774-8780-4cdf-9477-0cc0ef8b57d8 due to exception. Skipping this SPWeb for template upgrade. Exception: System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.SharePoint.SPSite.PreinitializeServer(SPRequest request)
at Microsoft.SharePoint.SPSite.GetSPRequest()
at Microsoft.SharePoint.SPSite.get_Request()
at Microsoft.SharePoint.SPSite.OpenWeb(Guid gWebId, Int32 mondoHint)
at Microsoft.SharePoint.Upgrade.SPWebTemplateSequence.ActivateWebFeatures(List`1 lstwebinfoToUpgrade, List`1& lstsiteidExceptions, List`1& lstwebinfoExceptions)
то надо просто переоткрыть окно PowerShell (http://blogs.msdn.com/b/jorman/archive/2010/06/09/mount-spcontentdatabase-failing-on-blank-meeting-workspace.aspx)
A duplicate content type name [xxx] was found
[powershell] [SPSiteWssSequence2] [ERROR] [4/15/2011 12:21:00 PM]: Feature upgrade incomplete for Feature 'CTypes' (Id: '695b6570-a48b-4a8e-8ea5-26ea7fc1d162') in Site 'http://portal’. Exception: A duplicate content type name "Рисунок" was found.
Осталась нерешенной. Есть похожая статья, которая мне не помогла Есть еще одна, с помощью которой я решил проблему.
- Открыл файл C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\FEATURES\ctypes\ctypeswss.xml
- Нашел ContentType с ID="0x010102, т.к. у нас ругается на Рисунок (Picture)
- Добавил атрибуты Inherits="TRUE" и Overwrite="TRUE". Должно получиться что-то вроде <ContentType ID="0x010102"
Name="$Resources:Picture"
Group="$Resources:Document_Content_Types"
Description="$Resources:imgCtDesc"
V2ListTemplateName="imglib"
Inherits="TRUE"
Overwrite="TRUE"
Version="0"> - Сохраняем файл
- Делаем iisrest
Ошибки после миграции
Ошибка доступа в момент редактирования страницы.
Симптомы: Я владелец узла (не администратор семейства узла). Периодически при попытке редактирования страницы выскакивает ошибка "Нет доступа".
Решение: Для сайта в Sharepoint 2007 были созданы свои мастер-страницы. Страницы были мигрированы на Sharepoint 2010 с учетом новой функциональности (лента, новые контролы и тд). Если к странице была применена наша мастер-страница, то получали ошибку, описанную выше. Если же выбрать стандартную мастер-страницу (v4.master), то такую ошибку мы не получаем. Поначалу кажется, что дело в нашей мастер-странице. Но данная статья говорит о другом. Если коротко, то инструкция следующая: зайти в библиотеку "мастер-страниц и макетов" на главном узле, перейти в настройки разрешения и дать нужным пользователям или группе пользователей права на чтение.
В Sharepoint 2007 была похожая проблема, которая решалась так (1 и 2). Данной проблемы не должно быть в 2010 шарике. К сожалению, я не опробовал этот вариант, может быть тоже подошел, но вариант выше лучше.
Комментариев нет:
Отправить комментарий