35 C
Dubai
Saturday, May 3, 2025
Home Blog Page 27

az Git Terraform configs to work behind Proxy

Let’s see how to configure proxy for az Git and Terraform behind an authenticated proxy for Windows machines

az git terraform working behind a proxy

For AZ commands to work behind a proxy –

$env:HTTPS_PROXY='195.229.203.100:10392'

For Git commands to work behind a proxy –

git config --global http.proxy http://195.229.203.100:10392

For Terraform init commands to work behind a proxy set these system variables –

HTTP_PROXY=http://195.229.203.100:10392
HTTPS_PROXY=http://195.229.203.100:10392

start run sysdm.cpl advanced environment variables –

Git Initial Config –

Configure git

Adding [EXTERNAL] for emails with Auto Remove on Reply

In the world of spam and the number of phishing emails is increasing day by day.  Alarming the users that this is an External email which is evidently required. Improve Security and but without killing the user experience and Outlook is predominantly taking the primary role of productivity we should always think twice about user experience.

In Order to Achieve this, you need to disable native clients and allow Outlook App and Outlook Clients only. As it detects the [EXTERNAL] tag and removes it without killing the email chain. Some Companies add a warning in the body which takes away the user to preview the emails in Outlook Client or in the Outlook App. As of today, this is the stable way to achieve this to have equal experience across all the clients – Outlook thick client / Outlook Web App / Outlook Mobile.

So when we prepend the subject as [EXTERNAL] without affecting the experience. The tag is safely removed on reply or forward from Outlook and Outlook App and not on native or third party clients like Airwatch Boxer. It was a huge struggle before where we had to use third-party rules software in order to remove this from the emails. This client experience makes things a lot easier and makes it easier to apply for office 365 users with simple transport rules. Also, this is not matured enough and foolproof on removing it. It works when you prepend the subject from a third party appliance like IronPort. It never gets removed when you use Native transport rules.

So far in my testing. it works seamlessly when emails are coming from Office 365 Tenant to Office 365 Tenant. Prepend subject through a third party appliance

There is another Office 365 feature that you can enable. which I have covered at the end of the article. if you are receiving emails via Office 365 it’s highly recommended you take the Set-ExternalInOutlook feature. as it’s most likely going to be the future killing all these custom transport rules one day or the other but as of today it’s half cooked and it doesn’t appear on outlook.

 

Sample Content Filter for Ironport – remove 1 after testing.

subject header != has to be entered like this to as it has special characters []
\[EXTERNAL\]

For Office 365 Transport Rules – It’s good to leave a space after [EXTERNAL] to keep up the user experience. So that the subject shows clean for the user on email clients

 

if you are receiving emails via Office 365. There is good news for you. You don’t have to go through the hassle of these transport rules. – Feature is in preview not working on Outlook thick client at the time of writing it works seamlessly on Outlook Web App / Outlook Mobile.

Connect-ExchangeOnline

To Check Current Status –

Get-ExternalInOutlook

To Enable –

Set-ExternalInOutlook -Enabled $true

To Disable –

Set-ExternalInOutlook -Enabled $false

To add domains to be excluded from external tagging –

Set-ExternalInOutlook -AllowList @{Add="azure365pro.com", "microsoft.com"}

To remove the domains which got added from the allow list earlier –

Set-ExternalInOutlook -AllowList @{Remove="azure365pro.com", "gmail.com"}

Outlook Web App Experience

Outlook Mobile Experience –

Blocking Guests on Sensitive Teams

The number of Teams is increasing day by day in environments and if you wish to block specific teams not to have external guests. you can do it. Team owners may add an external guest to a team by mistake. where a guest may watch sensitive conversations. to avoid such an embarrassing situation it’s better to protect such teams by blocking external guests. There is no GUI option at this moment to do the same.

let’s see how to do using azure ad and exchange online PowerShell modules

To Check which team has external guests –

Every team creates a unified group. So the easiest way to check which teams have external guests is to check the unified groups.

Connect to the exchange module.

Connect-Exchangeonline

Check for groups that have external guests

Get-UnifiedGroup | Where-Object {$_.GroupExternalMembercount -notlike "0"}

Now check for groups/teams which don’t have guests and block them all if required

Get-UnifiedGroup | Where-Object {$_.GroupExternalMembercount -like "0"}

Get the azure ad preview module –

Install-module AzureADPreview
Connect-AzureAD

Below applies to all groups/teams in the environment to stop adding guests.

$groupID =`
Get-UnifiedGroup | Where-Object{$_.GroupExternalMembercount -like "0"}`
| Select-Object -ExpandProperty ExternalDirectoryObjectId
Foreach ($Groups in $GroupID) {
    $template = Get-AzureADDirectorySettingTemplate | Where-Object {$_.displayname -eq "group.unified.guest"}
    $settingsCopy = $template.CreateDirectorySetting()
    $settingsCopy["AllowToAddGuests"]=$False
    New-AzureADObjectSetting -TargetType Groups -TargetObjectId $groups -DirectorySetting $settingsCopy
}
Now it’s applying to all teams
To revert back –
$groupID =`
Get-UnifiedGroup | Where-Object{$_.GroupExternalMembercount -like "0"}`
| Select-Object -ExpandProperty ExternalDirectoryObjectId
Foreach ($Groups in $GroupID) {
    $SettingID = Get-AzureADObjectSetting -TargetType Groups -TargetObjectID $Groups | select-object -expandproperty ID
    Remove-AzureADObjectSetting -Id $settingid -targettype Groups -TargetObjectID $Groups
    $template = Get-AzureADDirectorySettingTemplate | Where-Object {$_.displayname -eq "group.unified.guest"}
    $settingsCopy = $template.CreateDirectorySetting()
    $settingsCopy["AllowToAddGuests"]=$True
    New-AzureADObjectSetting -TargetType Groups -TargetObjectId $groups -DirectorySetting $settingsCopy
}
You can always manipulate the first line to suit your requirements –
To apply on Teams with no external guests –
 Get-UnifiedGroup | Where-Object{$_.GroupExternalMembercount -like "0"} 
To apply on a specific team –
Get-UnifiedGroup | Where-Object {$_.displayname -like "IT Team"}
To apply on a group of teams starts with Governance  –
Get-UnifiedGroup | Where-Object {$_.displayname -like "Governance*"}

To check the unified groups which has allowed external guests –

Get-UnifiedGroup | Where-Object {$_.allowaddguests -like $true}

To check the unified groups which has not allowed external guests –

Get-UnifiedGroup | Where-Object {$_.allowaddguests -like $false}

Installing Exchange 2016 on Windows Server 2016 Step by Step

Installing exchange server 2016 step by step on Windows Server 2016.

Make sure windows are patches with the latest updates. So that you have all the latest .net versions installed.

Before Exchange 2016 Install  – Go through the Minimum system requirements below – Note Preview versions are not Production ready.

Minimum System Requirements and Forest Functional Level for Exchange Server 2016

You can Download the Exchange Server 2016 CU15 Setup using the below Link

Step 1:

To Prepare Active Directory using the same machine.

Install the Below Feature which installs the Active Directory Tools as well.

Open Windows PowerShell.

Install-WindowsFeature RSAT-ADDS



image



Step 2:


Install Required Roles.


Open Windows PowerShell


Install-WindowsFeature NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-Mgmt, RSAT-Clustering-PowerShell, Web-Mgmt-Console, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation, RSAT-ADDS

image



To check the .Net Version on Windows Server 2016 – It recommended to patch the .net to latest supported version and then install Exchange


(Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' ).Release

Install .Net 4.8


https://go.microsoft.com/fwlink/?linkid=2088631



Install


Visual C++ Redistributable Package for Visual Studio 2012


Visual C++ Redistributable Package for Visual Studio 2013


Step 3


Download and Install Unified Communications Managed API 4.0 Runtime

image



Step 4:


Preparing Schema


Open Windows PowerShell – Browse to Setup Location –  Run as administrator.


.\setup /PrepareSchema /IAcceptExchangeServerLicenseTerms

image

Step 5:


Preparing Active Directory


.\setup /Preparead /IAcceptExchangeServerLicenseTerms /OrganizationName:"Enter Exchange Org Name"

Note: If you are already in an Exchange Organization – Remove /OrganizationName Parameter

image



Step 6:


Preparing Domain


.\setup /Preparedomain /IAcceptExchangeServerLicenseTerms

image



Note :


If you are in a Child domain Scenario


.\setup /Preparealldomains /IAcceptExchangeServerLicenseTerms

Step 7:


Run as Administrator – setup.exe


Choose Next, Accept the agreement.


image

Step 8:


Choose the Mailbox Role.


Choose Next


Note:” Edge Transport Role” should be installed in DMZ. (if required)


image

Step 9:


Choose Next


image

You can always move the Database path for Exchange Databases and log files to a separate drive.


How to move database path and log folder path in Exchange 2013/2016


Step 10:


Choose Next


If you already Did “Step 4” you won’t see an option to create an organization. As Already Exchange Org is already created


Else Enter an Org Name.


Step 11:


Choose  “No” for Malware Scanning


image

Step 10:


Choose Install


image

image

Microsoft  Exchange Server 2016  – Setup Completed Successfully.


Get-ExchangeServer| FT Name,Admin*

image

 

Known error – 

if you have a hybrid object which needs an upgrade. 

.\setup /PrepareSchema /IAcceptExchangeServerLicenseTerms

Microsoft Exchange Server 2016 Cumulative Update 20 Unattended Setup

Copying Files…
File copy complete. Setup will now collect additional information needed for installation.


Performing Microsoft Exchange Server Prerequisite Check

Prerequisite Analysis FAILED

A hybrid deployment with Office 365 has been detected. Please ensure that you are running setup with the
/TenantOrganizationConfig switch. To use the TenantOrganizationConfig switch you must first connect to your Exchange
Online tenant via PowerShell and execute the following command: “Get-OrganizationConfig | Export-Clixml -Path
MyTenantOrganizationConfig.XML”. Once the XML file has been generated, run setup with the TenantOrganizationConfig
switch as follows “/TenantOrganizationConfig MyTenantOrganizationConfig.XML”.
If you continue to see this this message
then it indicates that either the XML file specified is corrupt, or you are attempting to upgrade your on-premises
Exchange installation to a build that isn’t compatible with the Exchange version of your Office 365 tenant. Your Office
365 tenant must be upgraded to a compatible version of Exchange before upgrading your on-premises Exchange
installation. For more information, see: http://go.microsoft.com/fwlink/?LinkId=262888
For more information, visit: http://technet.microsoft.com/library(EXCHG.150)/ms.exch.setupreadiness.DidTenantSettingCrea
tedAnException.aspx

Connect-ExchangeOnline



Export the config to XML File.

Get-OrganizationConfig | Export-Clixml -Path "MyTenantOrganizationConfig.XML"

Do Prepare AD first with the XML file. Then the prepare schema as prepare schema doesn’t support TenantOrganizationConfig switch. 

.\setup /Preparead /IAcceptExchangeServerLicenseTerms /TenantOrganizationConfig "C:\scripts\MyTenantOrganizationCon<br />fig.XML"
                

External Forwarding without Mail Contact

In some scenarios. if forwarding needs to be enabled for numerous mailboxes and you don’t want to create mail contacts for them in the microsoft exchange server.

Ideal scenario going to mailbox properties enable forwarding and choose a mail contact. let’s see how to create forwarding without a mail contact.

Forwarding without mail contacts can be enabled through remote domains. By default, AutoforwardEnabled to set to false.

Get-RemoteDomain default | fl Name,AutoForwardEnabled

Instead of enabling for all domains, it’s wise to enable for specific domains only. So that you have control over it. Still, it varies scenario by scenario.

New-RemoteDomain azure365pro.com -DomainName azure365pro.com

by default when you add a remote domain autoforwardenabled to set to true

Get-RemoteDomain azure365pro.com | fl Name,AutoForwardEnabled

Now you can set forwarding without adding a mail contact like below. These forwarding will not be visible in the exchange control panel (ECP) interface.

Set-Mailbox username -DeliverToMailboxAndForward $false -ForwardingSmtpAddress forwardingmailbox@localhost

Removing remote domain if it’s not required.

How to restore Exchange Databases from a Storage failure

We should look for options when “Exchange Databases are not mounting”

  • Good backup Available.
  • No Backup – Exchange mailbox Databases are down.
  • Mounting a blank database – Keeping the messaging alive until you repair the exchange databases.
  • Soft recovery and Repairing the Exchange Databases
  • Recovery Databases

Have tried to include as many scenarios as possible.

Good backup Available

The best option is restoring from Backup software like Symantec / veeam / veritas / avamar which is the best option to have minimal downtime. but make sure you have to retain the live data whichever is on the existing drives – As you will lose data from the Backup taken time to the Storage Failure time.

if you have a good backup First Restore from the Backup get the production running. Then you can create a recovery database and repair the broken databases and merge them with your production.

you may have to take a copy or rename the database file before restoring using the backup software as they can overwrite the database files residing on the existing drives.

No Backup – Exchange mailbox Databases are down

Some Organizations start depending on DAG. Backup less solutions. Still, there are chances where your Database didn’t failover due to a network issue or various other reasons. Try forcing the failover. Check you can access the storage and bring that back. The stability of the databases has increased where the server or storage undergoes an intermittent failure new exchange versions cure themselves in few scenarios when it comes to database copies.

If you don’t have a backup, repairing the existing databases takes time approximately 5-10 Gb per hour. Totally depends on the IOPS/processor. if you don’t have a backup always take a copy of the broken databases. so that even if your repair is interrupted you don’t lose hope, you can copy it again for recovery purposes. Before that, There are various ways to get your databases healthy, 5-10 GB per hour is the worst-case scenario.

You got to check the health of the database, Where Exchange cannot connect back to a database again. if it’s not gracefully dismounted or disconnected from storage or server or anti-virus removes sometimes hold the log files mistakenly. let’s see how to check the health of the databases.

Open PowerShell

Locate to the .\eseutil.exe, Default location –

cd "C:\Program Files\Microsoft\Exchange Server\V15\Bin"

To check the status of the Exchange database :

locate to the bin folder to check the health of the exchange database

.\eseutil.exe /mh "D:\log files\Mailbox Database\Mailbox Database.edb"

there are two results, It may say clean or dirty, will go through both.

showing CLEAN SHUTDOWN – The database is healthy and it’s in a good shape. It couldn’t mount as it’s not able to understand the existing sequence of the log files.

Removing all the logs files from the logs files location and Mount the database. It should generate a new series of log files and mounting the database gracefully.

image

To get log file Location –

Get-mailboxdatabase | fl Name,*path

To force mount the databases –

Get-mailboxdatabase "Database Name" | Mount-database –Force

showing Dirty SHUTDOWN – The database is not in a good state (worst case), if the database sizes are massive, you cannot keep the environment down until the databases are repaired. here is the trick of mounting a blank database to keep the environment active going with a blank mailbox. and repair the broken databases and swap them again then merge them. if you don’t want to mount a blank database. skip it.

Mounting a blank database – Keeping the messaging alive until you repair the exchange databases.

  • Stop Microsoft Exchange Search Service
  • Stop Microsoft Exchange Search Host Controller Service

image

Now you can rename the database folder. Create an identical folder.

image

Mounting the store will force the creation of an empty database.

image

As soon as you mount a blank database in the messaging environment. Outlook will prompt for a restart. Once the outlook is restarted.

Users get an option of getting into a Temporary mailbox to send and receive emails or Use Old data to look at their cached PST if they are in Outlook cache mode.

image

if health check shows dirty –

.\eseutil.exe /mh "D:\log files\Mailbox Database\Mailbox Database.edb"

Let’s see how we can handle the broken database. you can see a row called “logs required”

Check the required logs are available or not. in my case, it’s 6079 – 6104

image

Check if you have the logs available

image

if you have the logs available – Make sure you got the .chk file in the same location. If you don’t have the required log files skip this step.

You can try running the soft recovery –  (/r)

Have the database and log files in the default location

If you cannot have in the default location use /D for database location, /s for checkpoint file location, /l for the log file location.

if you don’t mention it. it will take the default location

“/a” is for – even if some log files are missing it will try to get the database to a good shape (Data loss will be there)

E01 – Go to the log file location check how it starts E00 or E01 or E02

.\eseutil.exe /r e01 /l "D:\log files\Mailbox Database" /d "D:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database\Mailbox Database.edb" /a

Check the status after the soft Recovery – If its showing Clean Shutdown – You can mount the database, if it doesnt , you can always move the logs and try mounting it as the databases are in clean shutdown.

If its not in Clean shutdown . Even after soft recovery Process

Repairing the Exchange Database : (5 to 8 GB /hour) (Exchange 2010 and later versions are much faster)

.\eseutil.exe /p "D:\Databases\Mailbox Database\Mailbox Database.edb"

It will repair the database with 98% of success – Where data loss will be there in the corrupted portion of it. Mostly it’s minimal.

Once the repair process is completed. We can see the database to Clean shutdown.

I would recommend getting the mailboxes moved to a different database as soon as possible, to be on the safer side. also the Microsoft supportability point of view.

Recovery Databases  –

when it comes to recovery databases, you have to understand database swapping as well. if you repaired 500 Gb databases and your temporary database is 5 GB. there is no point in merging the 500 GB recovery database with a 5 GB temporary database. Also, the outlook will always want the old database back in place to overcome the initial prompt when you have a temporary database mounted. As you dismount the blank database and mount the repaired database as a primary and smaller database on the recovery. So that merging can be done quicker and simpler.

Creating a recovery database with existing database –

New-MailboxDatabase -Recovery -Name RDB -Server mail -EdbFilePath "C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Recover\Mailbox Database.edb" -LogFolderPath "C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Recover"

image

Merge them for one mailbox –

New-MaiboxRestoreRequest -SourceDatabase "RDB" -SourceStoreMailbox "vaishika sathesh" -TargetMailbox vaishika@localhost

If you have different users with the same display name – the below command should help you.

New-MailboxRestoreRequest -SourceDatabase "RDB" -SourceStoreMailbox 3965757c-f9f4-4c8d-a8c2-56a410257b52 -TargetMailbox vaishika@localhost -SkipMerging StorageProviderForSource

Merge them in bulk –


Foreach ($mailbox in Get-MailboxStatistics -Database RDB)

{

New-MailboxRestoreRequest -SourceDatabase RDB -SourceStoreMailbox $mailbox.DisplayName -TargetMailbox $mailbox.DisplayName

}

In Some cases. if the user took everything took to PST. you will see all the items to Recover Deleted Items

There is a good command to restore all deleted items to Mailbox –

Get-RecoverableItems "username" | Restore-RecoverableItems

Remove Recovery Database –

Get-MailboxDatabase recover01 | Dismount-Database
Remove-MailboxDatabase recover01

Known Errors :

he call to 'net.tcp://mail.azure365pro.com/Microsoft.Exchange.MailboxReplicationService mail.azure365pro.com(15.0.620.24 caps:3F)'
failed. Error details: must be logging in with GUIDs, not legDN
Parameter name: owner.
+ CategoryInfo : NotSpecified: (:) [New-MailboxRestoreRequest], CommunicationErrorTransientException
+ FullyQualifiedErrorId : 436EF2E5,Microsoft.Exchange.Management.RecipientTasks.NewMailboxRestoreRequest
+ PSComputerName : mail.azure365pro.com

Resolution –

Use


Foreach($mailbox in Get-MailboxStatistics -Database RDB)

{

New-MailboxRestoreRequest -SourceDatabase RDB -SourceStoreMailbox $mailbox.DisplayName -TargetMailbox $mailbox.DisplayName -SkipMerging StorageProviderForSource

}

Now Consider Database Repair Failed –

Mount a blank database.

Go to the cached outlook – Export to PST via Outlook.

Create a new Outlook Profile – Import PST

Other options – you can consider 3rd party solutions for EDB to PST conversion.
After repairing the databases if users have issues in accessing the folder you can run a repair on the mailbox

New-MailboxRepairRequest -Mailbox vaishika@localhost -CorruptionType ProvisionedFolder,SearchFolder,AggregateCounts,Folderview

Known issues –

Issue :

Unable to submit online integrity check request for database Mailbox Database. Failure:An unexpected error occurred

while trying to submit the request. Detailed error information follows

Microsoft.Mapi.MapiExceptionInvalidParameter: MapiExceptionInvalidParameter: Queue online isinteg request failed.

(hr=0x80070057, ec=-2147024809)

Resolution –

The database is in bad share after repair – Create a new database and move them

Issue :

Log Name:      Application
Source:        MSExchangeIS
Event ID:      2006
Level:         Error
Description:
Microsoft Exchange Information Store worker process (12584) has encountered an unexpected database error (Illegal duplicate key) for database ‘Mailbox Database’ with a call stack of
at Microsoft.Exchange.Server.Storage.PhysicalAccessJet.JetTableOperator.Insert(IList`1 columns, IList`1 values, Column identityColumnToFetch, Boolean unversioned, Boolean ignoreDuplicateKey, Object& identityValue)
at Microsoft.Exchange.Server.Storage.PhysicalAccessJet.JetInsertOperator.ExecuteScalar()
at Microsoft.Exchange.Server.Storage.PhysicalAccess.DataRow.Insert(IConnectionProvider connectionProvider)
at Microsoft.Exchange.Server.Storage.StoreCommonServices.ObjectPropertyBag.Flush(Context context)
at Microsoft.Exchange.Server.Storage.LogicalDataModel.Item.Flush(Context context)
at Microsoft.Exchange.Server.Storage.LogicalDataModel.Message.Flush(Context context)
at Microsoft.Exchange.Server.Storage.LogicalDataModel.Message.SaveChanges(Context context)
at Microsoft.Exchange.Server.Storage.LogicalDataModel.TopMessage.SaveChanges(Context context, SaveMessageChangesFlags flags)
at Microsoft.Exchange.Protocols.MAPI.MapiMessage.SaveChangesInternal(MapiContext context, MapiSaveMessageChangesFlags saveFlags, ExchangeId& newMid)

Log Name:      Application
Source:        MSExchangeIS
Event ID:      1046
Level:         Error

Description:
Unexpected error encountered in critical block. Location:(Microsoft.Exchange.Diagnostics.LID), scope: (MailboxShared), callstack: (   at Microsoft.Exchange.Server.Storage.StoreCommonServices.Context.OnCriticalBlockFailed(LID lid, CriticalBlockScope criticalBlockScope)
at Microsoft.Exchange.Server.Storage.StoreCommonServices.Context.CriticalBlockFrame.Dispose()
at Microsoft.Exchange.Server.Storage.LogicalDataModel.TopMessage.SaveChanges(Context context, SaveMessageChangesFlags flags)
at Microsoft.Exchange.Protocols.MAPI.MapiMessage.SaveChangesInternal(MapiContext context, MapiSaveMessageChangesFlags saveFlags, ExchangeId& newMid)
Log Name:      Application
Source:        MSExchangeIS
Event ID:      1002
Level:         Error

Description:
Unhandled exception (Microsoft.Exchange.Server.Storage.Common.DuplicateKeyException: JetTableOperator.Insert —> Microsoft.Isam.Esent.Interop.EsentKeyDuplicateException: Illegal duplicate key
at Microsoft.Isam.Esent.Interop.Server2003.Server2003Api.JetUpdate2(JET_SESID sesid, JET_TABLEID tableid, Byte[] bookmark, Int32 bookmarkSize, Int32& actualBookmarkSize, UpdateGrbit grbit)
at Microsoft.Exchange.Server.Storage.PhysicalAccessJet.JetTableOperator.Insert(IList`1 columns, IList`1 values, Column identityColumnToFetch, Boolean unversioned, Boolean ignoreDuplicateKey, Object& identityValue)

Resolution –

The database is in bad shape after repair – Create a new database and move them

Another Scenario –

[PS] C:\Program Files\Microsoft\Exchange Server\V14\Bin>eseutil.exe /r e05 /l “E:\Mailbox\Logs\VW” /d “G:\Mailbox\VW\VW.edb” /a

Extensible Storage Engine Utilities for Microsoft(R) Exchange Server
Version 14.02
Copyright (C) Microsoft Corporation. All Rights Reserved.

Initiating RECOVERY mode…
Logfile base name: e05
Log files: E:\Mailbox\Logs\VW
System files: <current directory>
Database Directory: G:\Mailbox\VW\VW.edb

Performing soft recovery…
Restore Status (% complete)

0 10 20 30 40 50 60 70 80 90 100
|—-|—-|—-|—-|—-|—-|—-|—-|—-|—-|
………………………………………….X

Operation terminated with error -1216 (JET_errAttachedDatabaseMismatch, An outstanding database attachment has been detected at the start or end of r

[PS] C:\Program Files\Microsoft\Exchange Server\V14\Bin>eseutil.exe /r e05 /l “E:\Mailbox\Logs\VW” /d “G:\Mailbox\VW\VW.edb” /a /i

Extensible Storage Engine Utilities for Microsoft(R) Exchange Server
Version 14.02
Copyright (C) Microsoft Corporation. All Rights Reserved.

Initiating RECOVERY mode…
Logfile base name: e05
Log files: E:\Mailbox\Logs\VW
System files: <current directory>
Database Directory: G:\Mailbox\VW\VW.edb

Performing soft recovery…
Restore Status (% complete)

0 10 20 30 40 50 60 70 80 90 100
|—-|—-|—-|—-|—-|—-|—-|—-|—-|—-|
……………………………………………

The operation completed successfully in 0.219 seconds.

Sometimes Even after showing Completed. Couldn’t see the database coming to a clean shutdown.

 

 

 

× How can I help you?