Работа системного администратора сродни работе психотерапевта:
- Доктор, у меня проблема.
- Желаете поговорить об этом? =)
Очередной запрос от пользователей поначалу показался мне легким и незамысловатым: на портале, базирующемся на ферме MOSS 2007, по какой-то причине оказались извлеченными для редактирования несколько файлов. Ошибка
The file <FileName> is checked out or locked for edition by <User>
Ну, казалось бы, что за проблема? Будучи администратором можно отменить извлечение и все. Ну, может быть у кого-то исчезнут последние изменения в файле, но в данном случае… Факты были таковы:
1) Пользователь, который якобы извлек для редактирования эти файлы вовсе не имел обыкновения работать в данной части портала
2) При попытке сделать этим файлам принудительный Check-in я был уведомлен, что в общем-то, файлы вовсе и не извлечены, так что и Check-in делать как-то не с руки. Попытки избавиться от ситуации с помощью SharePoint Designer так же не привели ни к чему.
Долго ли, коротко ли, но отчаявшись найти причину естественными методами, я прибег к противоестественным (да, да, да – я полез в базу напрямую). Не могу рекомендовать то, что я сделал, но для таких же отчаявшихся, как я – вполне сойдет. =)
Итак,
а) у каждого портала есть база, а в каждой такой базе есть таблица alldocs.
б) В этой базе нужно найти строки, касающиеся наших файлов:
select * from alldocs where dirName like '<Path/to/the/file>' and LeafName = 'File.docx'
Полученный ID и есть то, что нам нужно.
в) Проверьте, что эти файлы именно те, которые Вам нужны. Перепроверьте это (Кстати, а резервную копию базы Вы сделали?)
г) В полях CheckoutUserId, CheckoutDate & CheckoutExpires наличествуют записи, отличные от NULL. Нам нужно это исправить:
update AllDocs set CheckoutUserId = NULL, CheckoutDate = NULL, CheckoutExpires = NULL where Id = '<ID>'
Voila!
Комментариев нет:
Отправить комментарий