Merhaba, Exchange Server üzerinde bir veritabanını silmeye çalışırken aşağıdaki hata ile karşılaşabilirsiniz:
Exchange Server üzerinde güvenilir ve sorunsuz bir şekilde Databases silmek için aşağıda ki adımları takip etmemiz yeterli olacaktır.
İçindekiler
Exchange Server Veritabanı Silerken Hata veriyor
Exchange Server üzerinde bir veritabanı içerisinde aktif olarak kullanılan mailbox, public folder vb. gibi objeler bulunuyorsa Exchange Server üzerinde ilgili veritabanını silememekteyiz ve aşağıdaki gibi hatalar vermektedir.

Error: This mailbox database contains one or more mailboxes, mailbox plans, archive mailboxes, public folder mailboxes or arbitration mailboxes, Audit mailboxes. To get a list of all mailboxes in this database, run the command Get-Mailbox -Database <Database ID>. To get a list of all mailbox plans in this database, run the command Get-MailboxPlan. To get a list of archive mailboxes in this database, run the command Get-Mailbox -Database <Database ID> -Archive. To get a list of all public folder mailboxes in this database, run the command Get-Mailbox -Database <Database ID> -PublicFolder. To get a list of all arbitration mailboxes in this database, run the command Get-Mailbox -Database <Database ID> -Arbitration. To get a list of all Audit mailboxes in this database, run the command Get-Mailbox -Database <Database ID> -AuditLog. To disable a non-arbitration mailbox so that you can delete the mailbox database, run the command Disable-Mailbox <Mailbox ID>. To disable an archive mailbox so you can delete the mailbox database, run the command Disable-Mailbox <Mailbox ID> -Archive. To disable a public folder mailbox so that you can delete the mailbox database, run the command Disable-Mailbox <Mailbox ID> -PublicFolder. To disable a Audit mailbox so that you can delete the mailbox database, run the command Get-Mailbox -AuditLog | Disable-Mailbox. Arbitration mailboxes should be moved to another server; to do this, run the command New-MoveRequest <parameters>. If this is the last server in the organization, run the command Disable-Mailbox <Mailbox ID> -Arbitration -DisableLastArbitrationMailboxAllowed to disable the arbitration mailbox. Mailbox plans should be moved to another server; to do this, run the command Set-MailboxPlan <MailboxPlan ID> -Database <Database ID>.
Set-MailboxPlan MailboxPlan ID -Database Database ID.
+ CategoryInfo : InvalidOperation: (Database ID :DatabaseIdParameter) [Remove-MailboxDatabase], AssociatedUserMailboxExistException
+ FullyQualifiedErrorId : [Server= Server,RequestId= RequestId,TimeStamp= TimeStamp ] [FailureCategory=Cmdlet-AssociatedUserMailboxExistException] XXXXXXXX,Microsoft.Exchange.Management.SystemConfigurationTasks.RemoveMailboxDatabase
+ PSComputerName : Computer Name
Exchange Server‘da veritabanı silerken, almış olduğumuz hatanın çözümü için aşağıda ki adımları uygulayarak veritabanı içerisinde aktif olan hesaplarımızı listelememiz ve daha sonra başka veritabanlarına taşımamız gerekmektedir.
Kullanacağımız Komut ve Parametreler aşağıdaki gibi olacaktır;
- Get-Mailbox -Database “Database-Name”
- Get-Mailbox -Database “Database-Name” -Auditlog
- Get-Mailbox -Database “Database-Name” -Monitoring
- Get-Mailbox -Database “Database-Name” -Arbitration
- Get-Mailbox -Database “Database-Name” -Archive
- Get-Mailbox -Database “Database-Name” -PublicFolder
Exchange Server’da Mailbox Listeleme
Exchange Server‘da veritabanı silme işleminden önce, öncelikle veritabanı içerisinde aktif olarak bulunan Mailbox‘ları silmemiz veya başka bir veritabanına taşımamız gerekmektedir. Exchange Management Shell ile ilgili kontrolleri sağlamak için;
Get-Mailbox -Database “Database-Name”
Görüntülenen hesapları Exchange Management Shell veya ECP kullanarak başka bir Exchange Server veritabanına taşımanız gerekmektedir.
Exchange Server üzerinde Exchange Management Shell kullanarak Database to Database taşıma işlemi başlatabilmektesiniz.
New-MoveRequest (ExchangePowerShell) | Microsoft Learn
Get-Mailbox -Database DB01 | New-MoveRequest -TargetDatabase DB02 -BatchName "DB01toDB02"
Yukarı da paylaşmış olduğum komut, Exchange Server‘da belirli bir veritabanından başka bir veritabanına posta kutularını taşımak için kullanılmaktadır.
- Get-Mailbox -Database DB01: Bu komut parçası, “DB01” adlı veritabanında yer alan tüm posta kutularını getirir.
Get-Mailbox
cmdlet’i, belirtilen veritabanındaki posta kutularını listeler ve bu posta kutuları üzerinde işlem yapmak için bir nesne koleksiyonu sağlamaktadır. - | (Pipe): PowerShell’de pipe işareti, bir komutun çıktısını başka bir komuta giriş olarak aktarır. Bu durumda,
Get-Mailbox
komutu tarafından üretilen posta kutuları listesi, ardından gelenNew-MoveRequest
komutuna aktarılır. - New-MoveRequest -TargetDatabase DB02 -BatchName “DB01toDB02”: Bu komut,
Get-Mailbox
tarafından sağlanan posta kutularını “DB02” adlı hedef veritabanına taşımak için bir taşıma isteği (move request) oluşturur.- -TargetDatabase DB02: Taşınacak hedef veritabanını belirtir. Bu örnekte, posta kutuları “DB02” veritabanına taşınacaktır.
- -BatchName “DB01toDB02”: Taşıma işlemini gruplamak ve yönetmek için kullanılan bir isimdir. Bu isim, taşıma işlemini izlemek ve raporlamak için kullanılır.
Exchange Server Audit Log Mailbox Listeleme
- Audit posta kutuları, Exchange Server‘daki kullanıcı eylemlerinin kayıtlarını tutan özel posta hesapları olarak bilinmektedir. Bu posta kutuları, güvenlik denetimi ve uyumluluk gereklilikleri için kritik öneme sahip.
Get-Mailbox -Database "DB01" -AuditLog
Exchange Server Audit Log Mailbox Taşıma
Exchange Server üzerinde bir veritabanı silmeden önce Audit LOG hesaplarını da başka bir veritabanına taşımamız gerekmektedir, bu işlem için aşağıdaki komutu kullanabiliriz.
Get-Mailbox -Database "DB01" -AuditLog | New-MoveRequest -TargetDatabase "DB02" -BatchName "AuditLOGMbx"
Exchange Server Arbitration Mailbox Listeleme
- Arbitration Mailboxlar, Exchange Server içerisinde sistem işlemleri ve diğer yönetimsel fonksiyonlar için kullanılan posta kutularıdır.
Veritabanı içerisinde bulunan Arbitration Mailbox listelemek ve kontrol etmek için;
Get-Mailbox -Database "DB01" -Arbitration
Exchange Server Arbitration Mailbox Taşıma
Arbitration Mailboxları bir veritabanından diğerine taşımak için aşağıdaki komut kullanılmaktadır.
Get-Mailbox -Database "DB01" -Arbitration | New-MoveRequest -TargetDatabase "DB02" -BatchName "ArbitrationMbx"
Bu komut, “DB01” veritabanındaki tüm Arbitration Mailboxları “DB02” veritabanına taşır.
Exchange Server Public Folder Listeleme
- Public Folder Mailboxlar, Exchange Server’da kullanıcıların paylaştığı kaynakları içeren özel posta kutularıdır.
Bir veritabanındaki Public Folder Mailboxları listelemek için:
Get-Mailbox -Database "DB01" -PublicFolder
Bu komut, “DB01” veritabanındaki tüm Public Folder Mailboxları göstermektedir.
Exchange Server’da PublicFolder Hesapları Taşıma
Public Folder Mailboxları bir veritabanından diğerine taşımak için:
Get-Mailbox -Database "DB01" -PublicFolder | New-MoveRequest -TargetDatabase "DB02" -BatchName "PublicFolder"
Bu komut, “DB01″deki Public Folder Mailboxlarını “DB02″ye taşımak için kullanılmaktadır.
Exchange Server’da Monitoring Mailbox Listeleme
- Monitoring Mailboxlar, Exchange Server‘da sistem sağlığı ve performansı hakkında veri toplayan özel posta kutularıdır.
Exchange Server’da Monitoring Mailbox hesapları listelemek için;
Get-Mailbox -Database "DB01" -Monitoring
Exchange Server Monitoring Mailbox Taşıma
Monitoring Mailboxlar devre dışı bırakmak için;
Get-Mailbox -Database "DB01" -Monitoring | Disable-Mailbox -Confirm:$false
Exchange Server Archive Mailbox Listeleme
- Archive Mailbox’lar, kullanıcıların eski e-postalarını saklamak için kullanılan özel posta kutuları olarak bilinmektedir.
Bir veritabanındaki Archive Mailbox’ları listelemek için
Get-Mailbox -Database "DB01" -Archive
Exchange Server Archive Mailbox Taşıma
Archive Mailbox’ları bir veritabanından diğerine taşımak için;
Get-Mailbox -Database "DB01" -Archive | New-MoveRequest -TargetDatabase "DB02" -BatchName "ArchiveMbx"
Exchange Server’da Move İsteklerini Listeleme
Exchange Server‘da veritabanı silerken almış olduğumuz hata,aktif olan hesaplar veya silmek istediğimiz veritabanı üzerinde Move isteği varsa yaşanmaktadır.
Get-MoveRequestStatistics -MoveRequestQueue “Database-Name”
Eğer Exchange Management Shell üzerinde Move Request istekleri geldiyse, aşağıdaki komut ile beraber Move isteklerini temizleyebiliriz.
Get-MoveRequest -ResultSize Unlimited | Where-Object {$_.Status -like “Completed”} | Remove-MoveRequest -Confirm:$false
Yukarıda yapılan işlemler sonrası Exchange Server üzerinde silmek istediğimiz veritabanını sorunsuz bir şekilde silebiliriz. Eğer bu işlemlerden sonra tekrar Veritabanı silinmiyorsa ADSI üzerinden işlem yapmamız gerekmektedir.
ADSI Kullanarak Exchange Server Veritabanı Silme
ADSI Nedir?
ADSIEdit, Active Directory şemanızdaki nesneleri ve öznitelikleri yönetmek için kullanılan bir düzenleyicidir. Bu araç, Active Directory’nin daha derin yapılandırma ayarlarına müdahale etmenizi sağlar ve genellikle “Active Directory için bir kayıt defteri düzenleyicisi” olarak düşünülebilir.
Özellikle, Active Directory Users and Computers üzerinden yapılamayan bazı özel ayarlar için kullanılır.
MBX Veritabanını ADSIEdit ile Silme Adımları
- Domain Controllere Giriş Yapın:
- Etki alanı denetleyicinizde oturum açın.
- ADSIEdit’i Açın:
- Başlat menüsünde arama çubuğuna “ADSIEdit.msc” yazarak uygulamayı çalıştırın.
- Bağlantı Kurulumu:
- ADSIEdit’te,
Action > Connect to
seçeneğini takip edin. - “Select a well-known naming Context” altında “Configuration” seçeneğini belirleyin.
- ADSIEdit’te,
- Veritabanı Konumuna Gitme:
- Hiyerarşide,
CN=Configuration > DC=mydomain > DC=Local
yolunu izleyin. CN=Services > Microsoft Exchange > mydomain > Administrative Groups > CN=Databases
konumunu genişletin.
- Hiyerarşide,
- Veritabanını Silme:
- Silmek istediğiniz veritabanını seçin, sağ tıklayın ve “Delete” seçeneğini seçin.
- Replikasyon Durumunu Kontrol Etme:
- Komut İstemi’ni açın ve replikasyonun başarılı olup olmadığını kontrol etmek için
repadmin /replsummary
komutunu çalıştırın.
- Komut İstemi’ni açın ve replikasyonun başarılı olup olmadığını kontrol etmek için
Bu işlemler ile beraber Exchange Server üzerinde silmemiz gereken veritabanını başarılı bir şekilde gerçekleştirdik, yukarıda anlatılan tüm işlemleri gerçekleştirirken dikkat edilmesi ve sistem üzerinde kesinti yaşatılmaması çok önemlidir.