Event IDs 1022/2080: Transport Stuck Starting - Fix Guide 2025
Complete troubleshooting guide for Exchange Server Event IDs 1022 and 2080 when the Transport service fails to start. Learn how to fix service dependencies, database corruption, permission issues, and restore mail flow in 15-30 minutes.
Table of Contents
Event IDs 1022 and 2080 indicate the Exchange Transport service cannot start, completely stopping mail flow. No email can be sent or received until the service is running. This guide shows you how to identify the blocking issue and restore transport functionality.
Our Exchange Mail Flow Recovery Team specializes in transport service failures. This guide provides the systematic approach we use to get mail flowing again quickly.
Error Overview: What Events 1022/2080 Mean
These events are logged by MSExchangeTransport when the service encounters fatal errors during initialization. Event 1022 typically appears first (startup attempt), followed by 2080 (component initialization failure).
Log Name: Application
Source: MSExchangeTransport
Event ID: 1022
Level: Error
Description: Microsoft Exchange couldn't start transport agents.
Error: The process cannot access the file because
it is being used by another process.
Log Name: Application
Source: MSExchangeTransport
Event ID: 2080
Level: Error
Description: Microsoft Exchange Transport service initialization
failed because the queue database could not be
loaded. Error: JET_errFileAccessDeniedWhy this happens: The Transport service requires exclusive access to its queue database (mail.que), proper permissions, dependent services running, and valid configuration. Any failure in these areas prevents startup.
Transport Service Startup Sequence
Symptoms & Business Impact
What Users Experience:
- Emails stuck in Outbox, never sending
- No new emails received
- Outlook shows "Trying to connect..." or "Disconnected"
- OWA may work for reading but sending fails
- Mobile devices stop syncing new mail
What Admins See:
- MSExchangeTransport service in "Stopped" or "Starting" state
- Event IDs 1022, 2080, 2004 in Application log
- Service fails to start manually with error
- Get-TransportService returns no data or errors
- Test-ServiceHealth shows Transport unhealthy
Business Impact:
- Complete Mail Outage: Zero mail flow until resolved
- Cascading Delays: Other servers queue mail, creating backlogs
- Customer Impact: External senders get temporary bounce (450)
- SLA Breach: Email availability commitments violated
Common Causes of Events 1022/2080
1. Queue Database Corruption (35% of cases)
The mail.que database file is corrupted due to improper shutdown, disk errors, or interrupted writes. Transport cannot mount the database.
Identified by: Event log mentions "JET_err" errors or "database" failures
2. File Lock Conflict (25% of cases)
Another process (antivirus, backup agent, previous Transport instance) holds a lock on mail.que or transaction logs.
Identified by: "File is being used by another process" error
3. Service Dependency Failure (15% of cases)
Required services (AD Topology, Active Directory Access, NetLogon) are not running or unhealthy.
Identified by: Dependency services stopped; Event ID 2114 (AD topology discovery failed)
4. Permission Issues (12% of cases)
Exchange service account lacks required permissions to the queue database folder or registry keys after security changes.
Identified by: "Access denied" or "FileAccessDenied" in event log
5. Transport Agent Failure (8% of cases)
A transport agent (antivirus, DLP, compliance) fails to initialize, blocking service startup.
Identified by: Event mentions specific agent name; "couldn't start transport agents"
6. Disk Space Exhaustion (5% of cases)
Queue database drive has no free space for transaction log creation.
Identified by: Event mentions disk space; drive shows 0 bytes free
Quick Diagnosis: Find the Blocking Issue
📌 Version Compatibility: This guide applies to Exchange 2016, Exchange 2019, Exchange 2022. Commands may differ for other versions.
Run these commands to identify why Transport won't start:
# Check Transport service state
Get-Service MSExchangeTransport | Select-Object Name, Status, StartType
# Check dependency services
$deps = @("MSExchangeADTopology", "NetLogon", "DNS")
foreach ($svc in $deps) {
Get-Service $svc -ErrorAction SilentlyContinue |
Select-Object Name, Status
}
# Check all Exchange services health
Get-Service MSExchange* | Select-Object Name, Status | Format-Table# Get recent Transport-related events
Get-EventLog -LogName Application -Source MSExchangeTransport -Newest 20 |
Format-Table TimeGenerated, EventID, EntryType, Message -AutoSize -Wrap
# Look for related system events
Get-EventLog -LogName System -Newest 50 |
Where-Object {$_.Message -like "*transport*" -or $_.Message -like "*MSExchange*"} |
Format-Table TimeGenerated, Source, EventID, Message -AutoSizePro Tip: The key diagnostic information is in the Event ID 2080 message. It typically names the exact component or file that failed. Read the full message text carefully.
# Find queue database location
$queuePath = "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\Queue"
# Check if folder exists and has files
Get-ChildItem $queuePath -ErrorAction SilentlyContinue
# Check for file locks on mail.que
$mailQue = Join-Path $queuePath "mail.que"
if (Test-Path $mailQue) {
# Try to get exclusive access
try {
$stream = [System.IO.File]::Open($mailQue, 'Open', 'Read', 'None')
$stream.Close()
Write-Host "mail.que is NOT locked" -ForegroundColor Green
} catch {
Write-Host "mail.que IS LOCKED by another process" -ForegroundColor Red
}
}
# Find what process has the lock (requires handle.exe from Sysinternals)
# handle.exe mail.que# Check free space on queue database drive
Get-WmiObject Win32_LogicalDisk -Filter "DriveType=3" |
Select-Object DeviceID,
@{Name="FreeGB";Expression={[math]::Round($_.FreeSpace/1GB,2)}},
@{Name="TotalGB";Expression={[math]::Round($_.Size/1GB,2)}},
@{Name="PercentFree";Expression={[math]::Round(($_.FreeSpace/$_.Size)*100,1)}} |
Format-Table -AutoSize# List all transport agents (run from Exchange Management Shell)
Get-TransportAgent | Select-Object Identity, Enabled, Priority |
Format-Table -AutoSize
# If you suspect an agent, try disabling it
# Disable-TransportAgent "Suspicious Agent Name""Suspicious Agent Name"Quick Fix (10 Minutes) - Based on Diagnosis
Fix A: Restart Service with Dependency Check
# Stop Transport service
Stop-Service MSExchangeTransport -Force
# Ensure dependencies are running
Start-Service MSExchangeADTopology
Start-Sleep -Seconds 10
# Start Transport service
Start-Service MSExchangeTransport
# Check status
Get-Service MSExchangeTransport | Select-Object Name, StatusFix B: Release File Locks
# Stop all Exchange Transport processes
Stop-Service MSExchangeTransport -Force
Stop-Service MSExchangeFrontEndTransport -Force
Stop-Process -Name EdgeTransport -Force -ErrorAction SilentlyContinue
# Wait for processes to fully terminate
Start-Sleep -Seconds 15
# If antivirus is locking files, exclude the queue folder
# Add exclusion for: C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\Queue
# Start Transport
Start-Service MSExchangeTransportFix C: Repair Queue Database
Warning: Queued Messages at Risk
Running ESEUTIL on the queue database may result in loss of queued messages. Only proceed if other fixes have failed.
# Stop Transport service
Stop-Service MSExchangeTransport -Force
# Navigate to queue folder
cd "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\Queue"
# Check database state
eseutil /mh mail.que
# If Dirty Shutdown, run soft recovery
eseutil /r trn /l . /d .
# Check state again
eseutil /mh mail.que
# If still corrupted, try repair (DESTRUCTIVE - loses messages)
# eseutil /p mail.que
# Start Transport
Start-Service MSExchangeTransportFix D: Reset Queue Database (Last Resort)
# CAUTION: This deletes ALL queued messages!
# Stop Transport
Stop-Service MSExchangeTransport -Force
Stop-Service MSExchangeFrontEndTransport -Force
# Backup old queue folder
$queuePath = "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\Queue"
$backupPath = "C:\ExchangeBackup\Queue_$(Get-Date -Format 'yyyyMMdd_HHmmss')"-Format 'yyyyMMdd_HHmmss')"
Move-Item $queuePath $backupPath
# Create new empty folder
New-Item -ItemType Directory -Path $queuePath -Force
# Start Transport (creates new database)
Start-Service MSExchangeTransport
Start-Service MSExchangeFrontEndTransport
# Verify service running
Get-Service MSExchangeTransport | Select-Object StatusDetailed Solution: Complex Scenarios
Scenario 1: Transport Agent Blocking Startup
# List all agents with status
Get-TransportAgent | Format-Table Identity, Enabled, Priority
# Disable a specific agent (common culprits: antivirus, DLP)
Disable-TransportAgent "Malware Agent"
Disable-TransportAgent "Transport Rule Agent"
# Try starting Transport
Restart-Service MSExchangeTransport
# If successful, re-enable agents one by one to find the problematic one
Enable-TransportAgent "Transport Rule Agent"
Restart-Service MSExchangeTransport
# If a specific agent causes issues, check its configuration or update itScenario 2: Permission Issues
# Check current permissions
$queuePath = "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles"
icacls $queuePath
# Reset permissions to default Exchange settings
$exchangeInstallPath = $env:ExchangeInstallPath
& "$exchangeInstallPath\bin\ResetSecurity.ps1" -Server $env:COMPUTERNAME
# Or manually grant permissions
$acl = Get-Acl $queuePath
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
"NT AUTHORITY\NETWORK SERVICE", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow"
)
$acl.SetAccessRule($rule)
Set-Acl $queuePath $acl
# Restart Transport
Restart-Service MSExchangeTransportScenario 3: AD Topology Discovery Failure
# Check AD Topology service
Get-Service MSExchangeADTopology | Select-Object Name, Status
# Restart AD Topology service
Restart-Service MSExchangeADTopology
Start-Sleep -Seconds 30
# Verify AD connectivity
$dc = (Get-ADDomainController -Discover).HostName
Test-NetConnection -ComputerName $dc -Port 389
# Clear AD Topology cache
Stop-Service MSExchangeADTopology
Remove-Item "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\ADDriverCache.dat" -Force -ErrorAction SilentlyContinue
Start-Service MSExchangeADTopology
Start-Sleep -Seconds 30
# Now start Transport
Start-Service MSExchangeTransportScenario 4: Certificate Issues
# Check certificates assigned to SMTP
Get-ExchangeCertificate | Where-Object {$_.Services -like "*SMTP*"} |
Select-Object Thumbprint, Subject, NotAfter, Services
# If no certificate assigned or expired:
# Generate new self-signed certificate
$cert = New-ExchangeCertificate -GenerateRequest:$false -SubjectName "cn=mail.company.com" -PrivateKeyExportable $true -Services "SMTP"
# Or assign existing certificate to SMTP
Enable-ExchangeCertificate -Thumbprint "CERT_THUMBPRINT" -Services SMTP
# Restart Transport
Restart-Service MSExchangeTransportPro Tip: After any fix, check the Windows Event Log for the successful startup event (Event ID 1000 from MSExchangeTransport indicating service started successfully).
Verify the Fix
After Transport starts, confirm mail flow is working:
# 1. Verify Transport service is running
Get-Service MSExchangeTransport | Select-Object Name, Status
# 2. Check Transport service health
Test-ServiceHealth | Where-Object {$_.Role -eq "Mailbox"} |
Select-Object Role, RequiredServicesRunning, ServicesNotRunning
# 3. Verify queues are functional
Get-Queue | Select-Object Identity, Status, MessageCount | Format-Table
# 4. Send test email
Send-MailMessage -From "admin@company.com" -To "test@company.com" `
-Subject "Transport Test $(Get-Date)" -Body "Testing after 1022/2080 fix"2080 fix" `
-SmtpServer localhost
# 5. Check message tracking
Start-Sleep -Seconds 30
Get-MessageTrackingLog -Start (Get-Date).AddMinutes(-5) -MessageSubject "Transport Test*" |
Select-Object Timestamp, EventId, Source, Recipients
# 6. Verify no new error events
Get-EventLog -LogName Application -Source MSExchangeTransport -Newest 10 |
Select-Object TimeGenerated, EventID, EntryTypeSuccess Indicators:
- MSExchangeTransport service shows
Running - Test-ServiceHealth shows all services running
- Get-Queue returns queue information without error
- Test email appears in tracking log with DELIVER event
- No Event IDs 1022 or 2080 after service start
Prevention: Stop Transport Failures From Recurring
1. Configure Antivirus Exclusions
# Folders to exclude from antivirus scanning:
# - C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\
# - C:\Program Files\Microsoft\Exchange Server\V15\Bin\
# - C:\Windows\Temp\OICE_*
# Processes to exclude:
# - EdgeTransport.exe
# - MSExchangeTransport.exe
# - Microsoft.Exchange.*.exe2. Monitor Transport Service Health
# Schedule this to run every 5 minutes
$svc = Get-Service MSExchangeTransport
if ($svc.Status -ne "Running") {
# Attempt automatic restart
Start-Service MSExchangeTransport -ErrorAction SilentlyContinue
Start-Sleep -Seconds 60
$svc = Get-Service MSExchangeTransport
if ($svc.Status -ne "Running") {
# Alert admin
Send-MailMessage -To "admin@company.com" -From "alerts@company.com" `
-Subject "CRITICAL: Exchange Transport Service Down on $env:COMPUTERNAME" `
-Body "Transport service failed to start. Manual intervention required." `
-SmtpServer "backup-smtp.company.com"
}
}3. Ensure Adequate Disk Space
- Minimum 20GB free on queue database drive
- Configure disk space alerts at 10GB threshold
- Review and purge old transport logs monthly
4. Graceful Server Restarts
- Always stop MSExchangeTransport before server reboot
- Wait for service to stop cleanly (queue database checkpoint)
- Never hard-reset Exchange servers if avoidable
5. Keep Transport Agents Updated
- Update third-party transport agents with Exchange CUs
- Test agent compatibility in lab before production
- Remove unused transport agents
Transport Still Won't Start? Get Expert Help.
If the Transport service continues to fail after these troubleshooting steps, there may be deeper issues with queue database corruption, Active Directory replication, or third-party software conflicts. Our mail flow specialists can diagnose and resolve complex transport failures.
Exchange Transport Service RecoveryAverage Response Time: 15 Minutes
Frequently Asked Questions
Related Exchange Server Errors
Event ID 17018: Transport Insufficient Resources - Fix Guide 2025
Transport service lacking resources to process mail. Increase memory, optimize queues, fix bottlenecks.
Event ID 1009: Can't Contact Hub Transport - Fix Guide 2025
Cannot reach Hub Transport server. Fix network connectivity, firewall rules, and service issues.
Event ID 2004: Message Delivery Failed - Fix Guide 2025
Email delivery failures in Exchange transport. Diagnose NDRs, fix routing, resolve delivery issues.
Can't Resolve Event IDs 1022/2080?
Exchange errors can cause data loss or extended downtime. Our specialists are available 24/7 to help.
Emergency help - Chat with usMedha Cloud Exchange Server Team
Microsoft Exchange Specialists
Our Exchange Server specialists have 15+ years of combined experience managing enterprise email environments. We provide 24/7 support, emergency troubleshooting, and ongoing administration for businesses worldwide.