Recipe 6.8. Dismounting a DatabaseProblemYou need to dismount a database so you can perform maintenance or integrity checks on it. SolutionUsing a graphical user interface
Using VBScript' This code will dismount the selected mailbox database. ' ------ SCRIPT CONFIGURATION ------ strServerName = "<serverName>" ' e.g., "BATMAN" strMDBName = "<databaseName>" ' e.g., "Mailbox Store (BATMAN)" ' ------ END CONFIGURATION --------- Set theServer = CreateObject("CDOEXM.ExchangeServer") Set theMDB = CreateObject("CDOEXM.MailboxStoreDB") theServer.DataSource.Open strServerName arrSG = theServer.StorageGroups theFirstSG = arrSG(0) strURL = "LDAP://" & theServer.DirectoryServer & "/cn=" & strMDBName & "," & theFirstSG theMDB.DataSource.Open strURL theMDB.Dismount WScript.Echo "Database dismounted." DiscussionDismounting a database is simple, but it's required before you copy the database files using anything other than the Exchange backup APIs. That's because the dismount process sets a flag in the database header that indicates that the database was cleanly dismounted; if that flag is not there, Exchange will refuse to mount the database again until the header has been repaired with eseutil's /r mode. Using VBScriptThe code only works with mailbox databases because it uses the MailboxStoreDB object from CDOEXM. To make it work with public databases, you need to modify it to use the PublicStoreDB object instead. See AlsoRecipe 6.7 for mounting databases, and Microsoft Technet article "Top 10 Database Mounting Issues and Their Solutions" (http://www.microsoft.com/technet/prodtechnol/exchange/2003/hd.mspx) |