вторник, 23 июня 2015 г.

Удаление устаревших запросов из хранилища Exchange

Случаются такие ситуации, когда по недосмотру после определенных операций с объектами в хранилище остаются "хвосты", которые вроде бы и не мешают серверу работать, но в тоже время могут стать камнем преткновения при определенных манипуляциях с хранилищем.
Например, есть задача по переносу пользователей в новое хранилище, удаление из старого все почтовых ящиков и последующее удаление самого хранилища. И вот после всех манипуляций при попытке удаления хранилища получаем например такую ошибку:

Ошибка Microsoft Exchange
--------------------------------------------------------
Невозможно удалить базу данных почтовых ящиков 'Mailbox Database'.
Mailbox Database
Ошибка
Ошибка:
Эта база данных почтовых ящиков сопоставлена с одним или несколькими активными запросами MailboxImport. Чтобы получить список всех запросов MailboxImport, сопоставленных с этой базой данных, выполните команду Get-MailboxImportRequest | ?{ $_.RequestQueue -eq "<Database ID>" }. Чтобы удалить запрос MailboxImport, выполните команду Remove-MailboxImportRequest <Recipient ID\Request Name>.
* - вместо MailboxImport может быть указан другой запрос, например MailboxExport и тд. Основной сути это не меняет, просто надо будет использовать соответствующие запросу командлеты

Выполнение команды  MailboxImportRequest | ?{ $_.RequestQueue -eq "Mailbox Database"} действительно показывает нам, что активные запросы в хранилище присутствуют:

Name Mailbox Status
MailboxImport domain.local/Test/Иванов Иван Иванович Failed



А вот при попытке удаления данного запроса посредством команды Get-MailboxImportRequest | Remove-MailboxImportRequest получаем ошибку вида:

domain.local/Test/Иванов Иван Иванович  isn't a mailbox user or mail-enabled user.
+ CategoryInfo : NotSpecified: (0:Int32) [Remove-MailboxImportRequest], ManagementObjectNotFoundException
+ FullyQualifiedErrorId : 4D209789,Microsoft.Exchange.Management.RecipientTasks.RemoveMailboxImportRequest
Небольшое расследование показывает, что данный пользователь уже давно не имеет почтового ящика. В итоге имеем проблему, удалить хранилище мы не можем, так как имеется активный запрос. Удалить запрос тоже не можем, так как пользователь уже не имеет почтового ящика. Пересоздание почтового ящика для данного пользователя проблему не решает. Круг замкнулся...

Разомкнуть его нам поможет редактор ADSI

Для этого нужно открыть редактор в контексте Конфигурация (Configuration) и перейти в раздел:

CN=Mailbox Replication,CN=YOUR EXCHANGE ORG,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=domain,DC=local
Выбрать соответствующий проблемному запросу раздел. В нашем случае это CN=MailboxImportRequest. И в правой части окна программы удалить запись, соответствующую проблемному запросу.

После этого выполнение команды  MailboxImportRequest | ?{ $_.RequestQueue -eq "Mailbox Database"} показывает отсутствие активных запросов и теперь хранилище можно удалить из консоли Exchange либо используя Shell

Комментариев нет:

Отправить комментарий