Friday, August 13, 2010

How to rebuild index for Exchange 2007 DBs

Run error with Exchange 2007 DB index. Users reported they cannot find any message either from Outlook or OWA. Check Exchange server event log and find two events for two of the DBs.
 
Log Name:      Application
Source:        MSExchangeIS Mailbox Store
Date:          8/5/2010 12:22:47 PM
Event ID:      1025
Task Category: General
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      MBX-1
Description:
An error occurred on database "DB1\DB1".
 Function name or description of problem: Content Indexing received an unusual and unexpect error code from MSSearch
Error: 0xc0041800
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="MSExchangeIS Mailbox Store" />
    <EventID Qualifiers="32774">1025</EventID>
    <Level>3</Level>
    <Task>6</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2010-08-05T16:22:47.000Z" />
    <EventRecordID>810560</EventRecordID>
    <Channel>Application</Channel>
    <Computer>MBX-1</Computer>
    <Security />
  </System>
  <EventData>
    <Data>Content Indexing received an unusual and unexpect error code from MSSearch</Data>
    <Data>0xc0041800</Data>
    <Data>DB1\DB1</Data>
  </EventData>
</Event>
 
Log Name:      Application
Source:        MSExchange Search Indexer
Date:          8/5/2010 12:23:09 PM
Event ID:      107
Task Category: General
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      MBX-1
Description:
Exchange Search Indexer has temporarily disabled indexing of the Mailbox Database DB2\DB2 (GUID = 29df8d7a-dd2d-45fa-9852-0b079f996129) due to an error (System.ComponentModel.Win32Exception: Unknown error (0x80043613)
   at Microsoft.Exchange.Msfte.CSrchProject.SendBatch(BatchInformation batchInformation)
   at Microsoft.Exchange.Search.NotificationQueue.ProcessingProcedure()).
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="MSExchange Search Indexer" />
    <EventID Qualifiers="32772">107</EventID>
    <Level>3</Level>
    <Task>1</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2010-08-05T16:23:09.000Z" />
    <EventRecordID>810563</EventRecordID>
    <Channel>Application</Channel>
    <Computer>MBX-1</Computer>
    <Security />
  </System>
  <EventData>
    <Data>DB2\DB2</Data>
    <Data>29df8d7a-dd2d-45fa-9852-0b079f996129</Data>
    <Data>System.ComponentModel.Win32Exception: Unknown error (0x80043613)
   at Microsoft.Exchange.Msfte.CSrchProject.SendBatch(BatchInformation batchInformation)
   at Microsoft.Exchange.Search.NotificationQueue.ProcessingProcedure()</Data>
  </EventData>
</Event>
Based on these events, we decided to rebuild index for these two troubled DBs. After reindexing, everything goes to normal and users can do search from their mailbox again.
 
Here is list of cmdlet I used for reindex. (note: please plan run the cmdlet off hours since it uses CPU resources)
 
1. GetSearchIndexForDatabase -All
    to get list of index folder of all DBs. You will notice that these two troubled index folder's last modified date is not current.
 
2. ResetSearchIndex.ps1 -force  DB1
    ResetSearchIndex.ps1 -force  DB2
 
Note: it only needs DB name. it doesn't asked for Storage Group name or server name.
 

Sunday, August 8, 2010

How to transfer FSMO roles using Ntdsutil utility

Transfer FSMO roles

To transfer the FSMO roles by using the Ntdsutil utility, follow these steps:
  1. Log on to a Windows 2000 Server-based or Windows Server 2003-based member computer or domain controller that is located in the forest where FSMO roles are being transferred. We recommend that you log on to the domain controller that you are assigning FSMO roles to. The logged-on user should be a member of the Enterprise Administrators group to transfer Schema master or Domain naming master roles, or a member of the Domain Administrators group of the domain where the PDC emulator, RID master and the Infrastructure master roles are being transferred.
  2. Click Start, click Run, type ntdsutil in the Open box, and then click OK.
  3. Type roles, and then press ENTER.

    Note To see a list of available commands at any one of the prompts in the Ntdsutil utility, type ?, and then press ENTER.
  4. Type connections, and then press ENTER.
  5. Type connect to server servername, and then press ENTER, where servername is the name of the domain controller you want to assign the FSMO role to.
  6. At the server connections prompt, type q, and then press ENTER.
  7. Type transfer role, where role is the role that you want to transfer. For a list of roles that you can transfer, type ? at the fsmo maintenance prompt, and then press ENTER, or see the list of roles at the start of this article. For example, to transfer the RID master role, type transfer rid master. The one exception is for the PDC emulator role, whose syntax is transfer pdc, not transfer pdc emulator.
  8. At the fsmo maintenance prompt, type q, and then press ENTER to gain access to the ntdsutil prompt. Type q, and then press ENTER to quit the Ntdsutil utility.

How to Seize FSMO Roles

Seize FSMO roles

To seize the FSMO roles by using the Ntdsutil utility, follow these steps:
  1. Log on to a Windows 2000 Server-based or Windows Server 2003-based member computer or domain controller that is located in the forest where FSMO roles are being seized. We recommend that you log on to the domain controller that you are assigning FSMO roles to. The logged-on user should be a member of the Enterprise Administrators group to transfer schema or domain naming master roles, or a member of the Domain Administrators group of the domain where the PDC emulator, RID master and the Infrastructure master roles are being transferred.
  2. Click Start, click Run, type ntdsutil in the Open box, and then click OK.
  3. Type roles, and then press ENTER.
  4. Type connections, and then press ENTER.
  5. Type connect to server servername, and then press ENTER, where servername is the name of the domain controller that you want to assign the FSMO role to.
  6. At the server connections prompt, type q, and then press ENTER.
  7. Type seize role, where role is the role that you want to seize. For a list of roles that you can seize, type ? at the fsmo maintenance prompt, and then press ENTER, or see the list of roles at the start of this article. For example, to seize the RID master role, type seize rid master. The one exception is for the PDC emulator role, whose syntax is seize pdc, not seize pdc emulator.
  8. At the fsmo maintenance prompt, type q, and then press ENTER to gain access to the ntdsutil prompt. Type q, and then press ENTER to quit the Ntdsutil utility.