<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Brian Kern's Exchange Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/brian_kern/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/brian_kern/feed.xml</link>
    <description>Case notes from an Exchange Support Escalation Engineer based out of Charlotte, NC.</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:24:14 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>E2k10: Can't display a Recipient Scope with more than 1,000 objects returned</title>
      <link>https://docs.microsoft.com/archive/blogs/brian_kern/e2k10-cant-display-a-recipient-scope-with-more-than-1000-objects-returned</link>
      <pubDate>Mon, 12 Sep 2011 13:54:52 GMT</pubDate>
      <dc:creator><![CDATA[Brian Kern]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/brian_kern/2011/09/12/e2k10-cant-display-a-recipient-scope-with-more-than-1000-objects-returned/</guid>
      <description><![CDATA[We ran into an interesting problem in Exchange 2007 Service Pack 1 where certain kinds of LDAP...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">We ran into an interesting problem in Exchange 2007 Service Pack 1 where certain kinds of LDAP queries were rejected by Windows 2008 domain controllers. Exchange was changing the BaseDN attribute on successive searches, but Win2k8 is a bit more restrictive about what it allows through LDAP, so those successive queries would fail. </span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">You'd see an error message like this:</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: small;">Get-Recipient : Active Directory operation failed on &lt;Windows Server 2008 domain controller name&gt;. Additional information: Active Directory rejected paged search cookie because a cookie handle was discarded by a domain controller or a different LDAP connection was used on subsequent page retrieval. Restart paged search</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">This was patched out in E2k7 Sp1 Ru9 and is covered by <a href="https://support.microsoft.com/kb/961551">https://support.microsoft.com/kb/961551</a>.</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"></span>&nbsp;</p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">You can wind up with a similar error in Exchange 2010 when you're using Windows 2008 R2 Domain Controllers. If you're using the Exchange Management Console and attempt to list recipients when you have a scope configured that returns more than 1,000 objects, you'll get an error like this: <br /></span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: small;">Active Directory operation failed on &lt;Win2k8 DC name&gt;. Additional information: Active Directory rejected paged search cookie because a cookie handle was discarded by a Domain Controller or a different LDAP connection was used on subsequent page retrieval. Paged search needs to be restarted and will succeed. <br /><br />Additional information: The parameter is incorrect. <br /><br />Active directory response: 00000057: LdapErr: DSID-0c090753, comment: Error processing control, data 0, v1db1. It was running the command `Get-Recipient -PropertySet ConsoleLargeSet&nbsp; -ResultSize '5000' -SortBy DisplayName -RecipientType 'UserMailbox'". </span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"></span>&nbsp;</p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">Parsing the cmdlet above, you can see that the result size has already been bumped to 5,000 objects, so we're not hitting the traditional 1k limit on LDAP searches. The actual problem is with the Win2k8 R2 DCs you're using. When certain properties are passed to those DCs via LDAP, and the query generates more than one page of responses, the DCs fail to respond as expected. </span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">This problem is covered with a Windows-side hotfix. You can find that at <a href="https://support.microsoft.com/default.aspx?scid=kb;EN-US;2468316">https://support.microsoft.com/default.aspx?scid=kb;EN-US;2468316</a>. </span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Windows 2008 and the IsAlive Sanity Check</title>
      <link>https://docs.microsoft.com/archive/blogs/brian_kern/windows-2008-and-the-isalive-sanity-check</link>
      <pubDate>Thu, 04 Jun 2009 16:34:00 GMT</pubDate>
      <dc:creator><![CDATA[Brian Kern]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/brian_kern/2009/06/04/windows-2008-and-the-isalive-sanity-check/</guid>
      <description><![CDATA[Admins running Exchange Clusters are likely already familiar with volume mount points, but I'll...]]></description>
      <content:encoded><![CDATA[<P>Admins running Exchange Clusters are likely already familiar with volume mount points, but I'll provide a brief overview for those new to the topic: </P>
<P>A mount point is a location on a disk that looks and acts like a folder (in a logical sense) but actually points to a physical disk logical unit number (in a physical sense). Most cluster administrators use mount points to overcome limitations on the number of drive letters that can be assigned in a multi-node cluster. Some admins choose to use them just for convenience as it&nbsp;results in simplified paths to your databases and logs while still allowing you to divide the dbs and logs across many separate disk LUNs. (Our Exchange Team blog mentions mount points explicitly when discussing storage configurations - see&nbsp;<A href="https://msexchangeteam.com/archive/2007/01/15/432199.aspx" mce_href="https://msexchangeteam.com/archive/2007/01/15/432199.aspx">https://msexchangeteam.com/archive/2007/01/15/432199.aspx</A>). Mount points are still around in Windows 2008, but if you're thinking of implementing them for Exchange, I recommend reading the following KB article first:</P>
<P><A href="https://support.microsoft.com/kb/953652" mce_href="https://support.microsoft.com/kb/953652">https://support.microsoft.com/kb/953652</A> : A physical disk resource may unexpectedly fail or go offline when the IsAlive function is executed on a Windows Server 2008 cluster node</P>
<HR>

<H3>Scenario</H3>
<P>Our server is an Exchange 2007&nbsp;cluster (SCC) on a Windows 2008 platform.&nbsp;This server has 35 storage groups set up with one database in each&nbsp;SG. Users begin complaining that they can't access their email; a review of the server finds that Storage Group 8's database is in an `Online Pending` state. The database will&nbsp;not come online. Attempts to bring the database online or offline from the cluster failover console produce no results; cluster cannot manage the database at all. Attempts to fail back to the original node also go nowhere as the&nbsp;db resource&nbsp;cannot&nbsp;be controlled. </P>
<P>We wound up&nbsp;killing store.exe with Task Manager.&nbsp;From there we&nbsp;were able to fail over between our cluster nodes.&nbsp;Storage Group 8 came back online without a problem on our passive node.&nbsp;Root cause analysis (RCA) was requested&nbsp;for the database failure. </P>
<P mce_keep="true">&nbsp;</P>
<P>The Application Event Log shows the following events chronologically: </P>
<P><B>Source: ESE</B><BR>Event 482 - <BR>Attempt to write E07.log failed. System error 21 / -1022 (device not ready). </P>
<P>Event 414 - <BR>Unable to write Section 0 while flushing logfile G:\MySG8_Logs\E07.log. Error -1022 (0xfffffc02)</P>
<P>Event 492 - <BR>Logfile sequence for G:\MySG8_Logs halted due to a fatal error. No further updates possible for databases on this sequence. Please correct or restore from a backup.</P>
<P><B>Source: MSExchangeIS</B><BR>Event 9558 - <BR>Error occurred while writing to database log of SG "MySG8", attempting to unmount. </P>
<P><B>Source: ESE</B><BR>Event 471 - <BR>MSExchangeIS (7732) MySG8&nbsp;unable to rollback operation #461177896 on database G:\MySG8_DB\MySG8_DBFile.EDB error -510. All further database updates will be rejected. </P>
<P>--</P>
<P>1:01:22pm <BR>Source: MSExchangeCluster<BR>1021 - <BR>Failed to terminate the cluster resource MySG8_DB due to a timeout. </P>
<HR>

<P>Additional events in the log show that an online backup had&nbsp;completed on Storage Group 8&nbsp;minutes before the failure. &nbsp;</P>
<P><B>Event breakdown: </B><BR>The current transaction log file for Storage Group 8 (E07.log) could not be written to (see Event 482). At the same time, E07.log cannot be properly flushed (Event 414). Both operations fail with error -1022 / device not ready. At this point Exchange halts the transaction log seqeuence and attempts to perform a rollback. When that fails, Exchange takes the database offline. Cluster tries to bring it back online but that process hangs forever. </P>
<P><B>Root cause:</B><BR>The customer's had configured mount points for their transaction logs. These were stored on a single physical disk resource (G:). Each mount point went to the root of a separate physical disk LUN: for example, &nbsp;`G:\MySG8_Logs` maps to&nbsp;`<SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"> \\?\GLOBALROOT\Device\Harddisk14\Partition1\`.&nbsp;<FONT color=#000000 size=2 face=Arial> This runs directly into KB 953652.</FONT></SPAN></P>
<P>The Windows 2008 RTM's Cluster IsAlive&nbsp;check works by opening a random file handle for an object at the root of a LUN. In this case, an Online Backup had truncated the transaction log files. Cluster was performing an IsAlive check on two of the transaction log files that were truncated. Log truncation caused Cluster to register an <B>IsAlive Sanity Check</B> failure. Cluster, believing this is catastrophic, moves the physical disk offline, then back online. </P>
<P>All Exchange knows is that access to its current transaction log (Enn.log) has failed. Exchange assumes the worst, tries to roll back transactions, but fails because it can't access its own log to see what's going on. Exchange believes something terrible has happened to the transaction log disk so halts database updates to protect the data in the .edb.</P>
<P><B>Analysis:</B><BR>If you open up your cluster log you may see statements like these (date/time codes omitted): </P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3 face=Calibri>ERR&nbsp;&nbsp; [RES] Physical Disk &lt;MYSG8LOG&gt;: VerifyFS: Failed to open file </FONT>\\?\GLOBALROOT\Device\Harddisk14\Partition1\E0200025C63.log<FONT size=3 face=Calibri> Error: 2.</FONT></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3 face=Calibri>ERR&nbsp;&nbsp; [RES] Physical Disk &lt;MYSG8LOG&gt;: VerifyFS: Failed to open file </FONT>\\?\GLOBALROOT\Device\Harddisk14\Partition1\E0200025C93.log<FONT size=3 face=Calibri> Error: 2.</FONT></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><B><FONT size=3 face=Calibri>ERR&nbsp;&nbsp; [RES] Physical Disk &lt;MYSG8LOG&gt;: IsAlive sanity check failed!, FS check failed for partition 1, Error 2.</FONT></B></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3 face=Calibri>WARN&nbsp; [RHS] Resource MYSG8LOG IsAlive has indicated failure.</FONT></P>
<P>Error 2&nbsp;is <I>ERROR_FILE_NOT_FOUND</I>. Cluster is trying to read a log file that no longer exists. This example occurred when a backup truncated&nbsp;logs that Cluster wanted to use for it's IsAlive check. These logs are far down the transaction log sequence. </P>
<P><FONT size=3 face=Calibri><BR>INFO&nbsp; [RCM] HandleMonitorReply: FAILURENOTIFICATION for 'MYSG8LOG', gen(0) result 1.<BR></FONT><FONT size=3 face=Calibri>INFO&nbsp; [RCM] TransitionToState(MYSG8LOG) Online--&gt;ProcessingFailure.<BR></FONT><FONT size=3 face=Calibri>INFO&nbsp; [RCM] rcm::RcmGroup::ProcessStateChange: (MyServername, Online --&gt; Failed)</FONT><FONT size=3 face=Calibri><BR>ERR&nbsp;&nbsp; [RCM] rcm::RcmResource::HandleFailure: (MYSG8LOG)</FONT><FONT size=3 face=Calibri><BR>INFO&nbsp; [RCM] resource MYSG8LOG: failure count: 1, restartAction: 1.<BR></FONT><B><FONT size=3 face=Calibri>INFO&nbsp; [RCM] Will restart resource in 500 milliseconds.</FONT></B></P>
<P>When the IsAlive Sanity Check fails, Cluster assumes the physical disk resource is dead. </P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3 face=Calibri>INFO&nbsp; [RCM] TransitionToState(MYSG8LOG) ProcessingFailure--&gt;[Terminating to DelayRestartingResource].</FONT></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3 face=Calibri>INFO&nbsp; [RCM] rcm::RcmGroup::ProcessStateChange: (MyServername, Failed --&gt; Pending)</FONT></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3 face=Calibri>INFO&nbsp; [RES] Physical Disk &lt;MYSG8LOG&gt;: Terminate request.</FONT></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3 face=Calibri>WARN&nbsp; [RES] Physical Disk &lt;MYSG8LOG&gt;: OfflineThread: Failed to offline volume \Device\Harddisk14\Partition1, Error 5</FONT></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3 face=Calibri>INFO&nbsp; [RCM] TransitionToState(MYSG8LOG) [Terminating to DelayRestartingResource]--&gt;DelayRestartingResource.</FONT></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3 face=Calibri>INFO&nbsp; [RCM] Delay-restarting MYSG8LOG and any waiting dependents.</FONT></P>
<P>Following that assumption, Cluster calls for termination of the physical disk resource so that it can be restarted. Remember, the physical disk has nothing wrong with it at this time - Cluster takes the IsAlive Sanity Check at face value. The physical disk&nbsp;resource is forced offline, then brought online again&nbsp;immediately. The whole process takes around five seconds on a typical server. Exchange will not tolerate the loss of a disk resource in this manner. </P>
<P>This problem can also present where the IsAlive Sanity Check fails with Error 5 (<I>ERROR_ACCESS_DENIED</I>) if Cluster tries to&nbsp;read a file where the handle is locked by another process. There may be other codes, as well; this is not an inclusive list.</P>
<P mce_keep="true">&nbsp;</P>
<P><B>The good news</B>:</P>
<P>A hotfix is available for KB 953652 that corrects this problem. Alternately you can work around this by making sure that your transaction logs are always located in a directory - even on the other side of a mount point. (For this case, G:\MySG8 was the mount point, so creating the folder G:\MySG8\SG8logs\ and using that as your transaction log/system file path would have avoided this issue.) </P>]]></content:encoded>
    </item>
    <item>
      <title>Introductions</title>
      <link>https://docs.microsoft.com/archive/blogs/brian_kern/introductions</link>
      <pubDate>Thu, 04 Jun 2009 16:27:00 GMT</pubDate>
      <dc:creator><![CDATA[Brian Kern]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/brian_kern/2009/06/04/introductions/</guid>
      <description><![CDATA[Hi there - welcome to yet another MS Technet Blog! I'm an Exchange Support Escalation Engineer in...]]></description>
      <content:encoded><![CDATA[<P>Hi there - welcome to yet another MS Technet Blog! I'm an Exchange Support Escalation Engineer in the Exchange Administration specialty (XADM), and I'm here to share write-ups on cases and scenarios that might help other people avoid common problems, or that I find personally interesting, or both. </P>
<P>If you find the information contained here useful, drop me a comment and let me know! </P>]]></content:encoded>
    </item>
  </channel>
</rss>