Wednesday, May 4, 2016

Some More Adventures With Faulty Exchange Installs

Hi folks,

Just wanted to share with you my recent experience with installation of Exchange 2013 server. It failed at the point of installing component called Mailbox role:Mailbox services. The most frustrating moment was that it failed at the point of more than 90% of progress.

After consulting the setup log I have discovered the following:

[03/21/2016 12:45:55.0913] [2] [ERROR] Service 'MSExchangeSubmission' failed to reach status 'Running' on this server.
[03/21/2016 12:45:55.0913] [2] [ERROR] Service 'MSExchangeSubmission' failed to reach status 'Running' on this server.
[03/21/2016 12:45:55.0928] [2] Ending processing start-SetupService
[03/21/2016 12:45:55.0928] [1] The following 1 error(s) occurred during task execution:
[03/21/2016 12:45:55.0928] [1] 0.  ErrorRecord: Service 'MSExchangeSubmission' failed to reach status 'Running' on this server.
[03/21/2016 12:45:55.0928] [1] 0.  ErrorRecord: Microsoft.Exchange.Configuration.Tasks.ServiceDidNotReachStatusException: Service 'MSExchangeSubmission' failed to reach status 'Running' on this server.
   at Microsoft.Exchange.Configuration.Tasks.Task.ThrowError(Exception exception, ErrorCategory errorCategory, Object target, String helpUrl)
   at Microsoft.Exchange.Configuration.Tasks.Task.WriteError(Exception exception, ErrorCategory category, Object target)
   at Microsoft.Exchange.Management.Tasks.ManageSetupService.WaitForServiceStatus(ServiceController serviceController, ServiceControllerStatus status, Unlimited`1 maximumWaitTime, Boolean ignoreFailures, Boolean sendWatsonReportForHungService)
   at Microsoft.Exchange.Management.Tasks.ManageSetupService.StartService(ServiceController serviceController, Boolean ignoreServiceStartTimeout, Boolean failIfServiceNotInstalled, Unlimited`1 maximumWaitTime, String[] serviceParameters)
   at Microsoft.Exchange.Management.Tasks.ManageSetupService.StartService(String serviceName, Boolean ignoreServiceStartTimeout, Boolean failIfServiceNotInstalled, Unlimited`1 maximumWaitTime, String[] serviceParameters)
   at Microsoft.Exchange.Management.Tasks.StartSetupService.InternalProcessRecord()
   at Microsoft.Exchange.Configuration.Tasks.Task.<ProcessRecord>b__b()
   at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)
[03/21/2016 12:45:55.0928] [1] [ERROR] The following error was generated when "$error.Clear(); 
start-SetupService -ServiceName MSExchangeSubmission

" was run: "Microsoft.Exchange.Configuration.Tasks.ServiceDidNotReachStatusException: Service 'MSExchangeSubmission' failed to reach status 'Running' on this server.
   at Microsoft.Exchange.Configuration.Tasks.Task.ThrowError(Exception exception, ErrorCategory errorCategory, Object target, String helpUrl)
   at Microsoft.Exchange.Configuration.Tasks.Task.WriteError(Exception exception, ErrorCategory category, Object target)
   at Microsoft.Exchange.Management.Tasks.ManageSetupService.WaitForServiceStatus(ServiceController serviceController, ServiceControllerStatus status, Unlimited`1 maximumWaitTime, Boolean ignoreFailures, Boolean sendWatsonReportForHungService)
   at Microsoft.Exchange.Management.Tasks.ManageSetupService.StartService(ServiceController serviceController, Boolean ignoreServiceStartTimeout, Boolean failIfServiceNotInstalled, Unlimited`1 maximumWaitTime, String[] serviceParameters)
   at Microsoft.Exchange.Management.Tasks.ManageSetupService.StartService(String serviceName, Boolean ignoreServiceStartTimeout, Boolean failIfServiceNotInstalled, Unlimited`1 maximumWaitTime, String[] serviceParameters)
   at Microsoft.Exchange.Management.Tasks.StartSetupService.InternalProcessRecord()
   at Microsoft.Exchange.Configuration.Tasks.Task.<ProcessRecord>b__b()
   at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)".
[03/21/2016 12:45:55.0928] [1] [ERROR] Service 'MSExchangeSubmission' failed to reach status 'Running' on this server.
[03/21/2016 12:45:55.0928] [1] [ERROR-REFERENCE] Id=MailboxServiceControlLast___23a36fed7b6947e0906f388b5a90135c Component=EXCHANGE14:\Current\Release\Shared\Datacenter\Setup
[03/21/2016 12:45:55.0928] [1] Setup is stopping now because of one or more critical errors.
[03/21/2016 12:45:55.0928] [1] Finished executing component tasks.
[03/21/2016 12:45:55.0944] [1] Ending processing Install-MailboxRole
[03/21/2016 12:45:55.0959] [0] CurrentResult console.ProcessRunInternal:198: 1
[03/21/2016 12:45:55.0959] [0] CurrentResult launcherbase.maincore:90: 1
[03/21/2016 12:45:55.0959] [0] CurrentResult console.startmain:52: 1
[03/21/2016 12:45:55.0959] [0] CurrentResult SetupLauncherHelper.loadassembly:452: 1
[03/21/2016 12:45:55.0959] [0] The Exchange Server setup operation didn't complete.  More details can be found in ExchangeSetup.log located in the <SystemDrive>:\ExchangeSetupLogs folder.
[03/21/2016 12:45:55.0959] [0] CurrentResult main.run:235: 1
[03/21/2016 12:45:55.0959] [0] CurrentResult setupbase.maincore:396: 1
[03/21/2016 12:45:55.0959] [0] End of Setup

From all I saw ins the log installation program failed to start MSExchangeSubmission service and there were too many failed attempts that it simply gave up and stopped with error as above.

Quite interestingly services for other roles were installed and successfully started. I could tell it by looking into the Service console. As the first step I decided to rerun installation of Exchange 2013 by using the exactly the same command as I did during the first installation step.

In my case it was like the below:

setup.exe /mode:install /roles:Mailbox,ClientAccess /IAcceptExchangeServerLicenseTerms /InstallWindowsComponents /TargetDir:"C:\Program Files\Microsoft\Exchange Server\V15" /DoNotStartTransports

Installation program discovered Exchange components that were already installed and and kicked off from the point where it failed (as you can see it below):



So in the cases like that I would suggest to rerun Exchange installation program as the first step before you go on for further troubleshooting.

And it proves my theory that Exchange 2013/16 are simply Exchange 2010 roles placed together on one box and even though they are turned now into a single installation block, modular structure is still there beyond the veil. In a sense this situation was similar to the one I wrote about in this blog post.

I hope you find it is helpful for you if you face similar situation.

Enjoy!