Назад | Перейти на главную страницу

Ошибка OWA: тип исключения: Microsoft.Exchange.Data.Storage.StorageTransientException

Некоторые пользователи случайно получают эту ошибку в веб-почте OWA:

Request 
Url: https://xxx:443/owa/default.aspx 
User host address: xxx 

Exception 
Exception type: Microsoft.Exchange.Data.Storage.StorageTransientException 
Exception message: There was a problem accessing Active Directory. 

Call stack 
Microsoft.Exchange.Data.Storage.ExchangePrincipal.FromUserSid(ADRecipientSession recipientSession, SecurityIdentifier userSid) 
Microsoft.Exchange.Clients.Owa.Core.OwaWindowsIdentity.CreateExchangePrincipal() 
Microsoft.Exchange.Clients.Owa.Core.RequestDispatcher.GetExchangePrincipal(OwaContext owaContext, ExchangePrincipal& exchangePrincipal) 
Microsoft.Exchange.Clients.Owa.Core.RequestDispatcher.PrepareRequestWithoutSession(OwaContext owaContext, UserContextCookie userContextCookie) 
Microsoft.Exchange.Clients.Owa.Core.RequestDispatcher.InternalDispatchRequest(OwaContext owaContext) 
Microsoft.Exchange.Clients.Owa.Core.RequestDispatcher.DispatchRequest(OwaContext owaContext) 
System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

Inner Exception 
Exception type: Microsoft.Exchange.Data.Directory.ADTransientException 
Exception message: Could not find any available Global Catalog in forest xxx.local. 

Call stack 
Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType connectionType, ADObjectId domain, String serverName, Int32 port, NetworkCredential credential) 
Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType connectionType) 
Microsoft.Exchange.Data.Directory.ADSession.GetConnection(String preferredServer, Boolean isWriteOperation, Boolean isNotifyOperation, ADObjectId& rootId) 
Microsoft.Exchange.Data.Directory.ADSession.GetReadConnection(String preferredServer, ADObjectId& rootId) 
Microsoft.Exchange.Data.Directory.ADSession.Find(ADObjectId rootId, String optionalBaseDN, ADObjectId readId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties, CreateObjectDelegate objectCreator, CreateObjectsDelegate arrayCreator) 
Microsoft.Exchange.Data.Directory.ADSession.Find(ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties, CreateObjectDelegate objectCtor, CreateObjectsDelegate arrayCtor) 
Microsoft.Exchange.Data.Directory.ADSession.Find[TResult](ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties) 
Microsoft.Exchange.Data.Directory.Recipient.ADRecipientSession.FindBySid(SecurityIdentifier sId) 
Microsoft.Exchange.Data.Storage.ExchangePrincipal.FromUserSid(ADRecipientSession recipientSession, SecurityIdentifier userSid)

Также я заметил, что пользователи Outlook и Thunderbird с Exquilla иногда не могут отправлять письма, но не показывают никаких убедительных ошибок, а только сообщение об ошибке, в котором говорится, что он не может отправить.

По крайней мере, на сервере C: \ Windows \ System32 \ LogFiles \ HTTPERR с журналами IIS у меня нет ничего связанного.

Также в журналах событий у меня есть несколько журналов об этой проблеме:

Код события 2080: MSExchange ADAccess

Process MSEXCHANGEADTOPOLOGYSERVICE.EXE (PID=3028). Exchange Active Directory Provider has discovered the following servers with the following characteristics: 
 (Server name | Roles | Enabled | Reachability | Synchronized | GC capable | PDC | SACL right | Critical Data | Netlogon | OS Version) 
In-site:
xxx.xxx.local   CDG 1 6 7 1 0 1 1 7 1
 Out-of-site:

Код события 4001: почтовый ящик системного помощника MSExchange

A transient failure has occurred. The problem may resolve itself in awhile. The service will retry in 56 seconds. Diagnostic information:

Could not find any available Global Catalog in forest xxx.local.
Microsoft.Exchange.Data.Directory.ADTransientException: Could not find any available Global Catalog in forest xxx.local.
   at Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType connectionType, ADObjectId domain, String serverName, Int32 port, NetworkCredential credential)
   at Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType connectionType)
   at Microsoft.Exchange.Data.Directory.ADSession.GetConnection(String preferredServer, Boolean isWriteOperation, Boolean isNotifyOperation, ADObjectId& rootId)
   at Microsoft.Exchange.Data.Directory.ADSession.GetReadConnection(String preferredServer, ADObjectId& rootId)
   at Microsoft.Exchange.Data.Directory.ADSession.Find(ADObjectId rootId, String optionalBaseDN, ADObjectId readId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties, CreateObjectDelegate objectCreator, CreateObjectsDelegate arrayCreator)
   at Microsoft.Exchange.Data.Directory.ADSession.Find(ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties, CreateObjectDelegate objectCtor, CreateObjectsDelegate arrayCtor)
   at Microsoft.Exchange.Data.Directory.ADSession.Find[TResult](ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties)
   at Microsoft.Exchange.Data.Directory.Recipient.ADRecipientSession.FindByLegacyExchangeDN(String legacyExchangeDN)
   at Microsoft.Exchange.Servicelets.SystemAttendantMailbox.Servicelet.Work()

Код события 1022: Хранилище почтовых ящиков MSExchangeIS

Logon Failure on database "First Storage Group\Mailbox Database" - Windows account NT AUTHORITY\NETWORK SERVICE; mailbox /o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=user1.Error: -2147221231 Client Machine: xxx Client Process: edgetransport.exe Client ProcessId: 0 Client ApplicationId: Client=HUB 
Text
Event ID 1: MSExchange Autodiscover
Unhandled Exception "Could not find any available Global Catalog in forest xxx.local."Stack Trace:    at Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType connectionType, ADObjectId domain, String serverName, Int32 port, NetworkCredential credential)   at Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType connectionType)   at Microsoft.Exchange.Data.Directory.ADSession.GetConnection(String preferredServer, Boolean isWriteOperation, Boolean isNotifyOperation, ADObjectId& rootId)   at Microsoft.Exchange.Data.Directory.ADSession.GetReadConnection(String preferredServer, ADObjectId& rootId)   at Microsoft.Exchange.Data.Directory.ADSession.Find(ADObjectId rootId, String optionalBaseDN, ADObjectId readId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties, CreateObjectDelegate objectCreator, CreateObjectsDelegate arrayCreator)   at Microsoft.Exchange.Data.Directory.ADSession.Find(ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties, CreateObjectDelegate objectCtor, CreateObjectsDelegate arrayCtor)   at Microsoft.Exchange.Data.Directory.ADSession.Find[TResult](ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties)   at Microsoft.Exchange.Data.Directory.Recipient.ADRecipientSession.FindBySid(SecurityIdentifier sId)   at Microsoft.Exchange.Autodiscover.Providers.Outlook.OutlookAutoDiscoverProvider..ctor(RequestData requestData)

Код события 1: автообнаружение MSExchange

Unhandled Exception "Could not find any available Global Catalog in forest xxx.local."Stack Trace:    at Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType connectionType, ADObjectId domain, String serverName, Int32 port, NetworkCredential credential)   at Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType connectionType)   at Microsoft.Exchange.Data.Directory.ADSession.GetConnection(String preferredServer, Boolean isWriteOperation, Boolean isNotifyOperation, ADObjectId& rootId)   at Microsoft.Exchange.Data.Directory.ADSession.GetReadConnection(String preferredServer, ADObjectId& rootId)   at Microsoft.Exchange.Data.Directory.ADSession.Find(ADObjectId rootId, String optionalBaseDN, ADObjectId readId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties, CreateObjectDelegate objectCreator, CreateObjectsDelegate arrayCreator)   at Microsoft.Exchange.Data.Directory.ADSession.Find(ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties, CreateObjectDelegate objectCtor, CreateObjectsDelegate arrayCtor)   at Microsoft.Exchange.Data.Directory.ADSession.Find[TResult](ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties)   at Microsoft.Exchange.Data.Directory.Recipient.ADRecipientSession.FindBySid(SecurityIdentifier sId)   at Microsoft.Exchange.Autodiscover.Providers.Outlook.OutlookAutoDiscoverProvider..ctor(RequestData requestData)

Порядок в журнале событий:

Кто угодно?

Из сообщения об ошибке "Не удалось найти доступный глобальный каталог в лесу xxx.local", это означает, что эта проблема может быть связана со статусом сборки мусора. Запустить DCDiag для анализа состояния контроллеров домена.

Кроме того, выполните команду ниже, чтобы просмотреть текущий DC, GC и статический DC, GC:

Get-ExchangeServer -Status | fl Name,Current*,Static*