<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Steve Sheppard's Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/steveshe/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/steveshe/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 05:30:01 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>How do I reset the disk based BLOB cache in SharePoint 2010?</title>
      <link>https://docs.microsoft.com/archive/blogs/steveshe/how-do-i-reset-the-disk-based-blob-cache-in-sharepoint-2010</link>
      <pubDate>Mon, 02 Aug 2010 11:45:00 GMT</pubDate>
      <dc:creator><![CDATA[Steve Sheppard - Microsoft]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/steveshe/2010/08/02/how-do-i-reset-the-disk-based-blob-cache-in-sharepoint-2010/</guid>
      <description><![CDATA[In SharePoint 2010 we have completely removed the UI for resetting the disk based BLOB cache. This...]]></description>
      <content:encoded><![CDATA[<p>In SharePoint 2010 we have completely removed the UI for resetting the disk based BLOB cache. This means that you can only reset it through the SharePoint Object Model . Fortunately,&nbsp;since we invested in the SharePoint 2010 Management Shell, it's not that difficult to do. Here is some sample code to help you do this:</p>
<p><span style="color: #008000;">#</span><span style="color: #008000;"> A script to reset the SharePoint 2010 Disk Based Cache for BLOBs</span><span style="color: #008000;"><br />#</span><span style="color: #008000;"> Example: .\Reset-Blob-Cache.ps1 http://MySiteCollection</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br /></span><span style="color: #008000;">#</span><span style="color: #008000;"> Loads the SharePoint 2010 PowerShell extensions so we can easily </span><span style="color: #008000;"><br />#</span><span style="color: #008000;"> get a reference to our dlls.</span><span style="color: #008000;"><br /></span><span style="color: #0000FF;">try</span><span style="color: #000000;"><br />{<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #0000FF;">if</span><span style="color: #000000;">(((</span><span style="color: #5F9EA0; font-weight: bold;">Get-PSSnapin</span><span style="color: #000000;"> | </span><span style="color: #5F9EA0; font-weight: bold;">foreach</span><span style="color: #000000;"> {</span><span style="color: #800080;">$_</span><span style="color: #000000;">.Name}) </span><span style="color: #FF0000;">-contains</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">Microsoft.SharePoint.PowerShell</span><span style="color: #800000;">"</span><span style="color: #000000;">) </span><span style="color: #FF0000;">-eq</span><span style="color: #000000;"> </span><span style="color: #800080;">$false</span><span style="color: #000000;">)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #5F9EA0; font-weight: bold;">Add-PSSnapIn</span><span style="color: #000000;"> </span><span style="color: #800000;">Microsoft.SharePoint.PowerShell</span><span style="color: #000000;"> </span><span style="color: #5F9EA0; font-style: italic;">-ErrorAction</span><span style="color: #000000;"> </span><span style="color: #800000;">Stop</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp; }<br />}<br /></span><span style="color: #0000FF;">catch</span><span style="color: #000000;"><br />{<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #5F9EA0; font-weight: bold;">Write-Host</span><span style="color: #000000;"> </span><span style="color: #5F9EA0; font-style: italic;">-ForegroundColor</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">red</span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">This script only works on machines with SharePoint 2010 installed.`n</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp; Exit<br />}<br /><br /></span><span style="color: #008000;">#</span><span style="color: #008000;"> Use Reflection to get a reference to our dlls.</span><span style="color: #008000;"><br /></span><span style="color: #0000FF;">try</span><span style="color: #000000;"><br />{<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #800080;">$spAssembly</span><span style="color: #000000;"> </span><span style="color: #FF0000;">=</span><span style="color: #000000;"> [</span><span style="color: #008080;">System.Reflection.Assembly</span><span style="color: #000000;">]::</span><span style="color: #8B4513;">GetAssembly</span><span style="color: #000000;">([Microsoft.SharePoint.SPSite])<br />&nbsp;&nbsp;&nbsp; [</span><span style="color: #008080;">System.Reflection.Assembly</span><span style="color: #000000;">]::</span><span style="color: #8B4513;">Load</span><span style="color: #000000;">(</span><span style="color: #800080;">$spAssembly</span><span style="color: #000000;">) | </span><span style="color: #5F9EA0; font-weight: bold;">Out-Null</span><span style="color: #000000;"><br />}<br /></span><span style="color: #0000FF;">catch</span><span style="color: #000000;"><br />{<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #5F9EA0; font-weight: bold;">Write-Host</span><span style="color: #000000;"> </span><span style="color: #5F9EA0; font-style: italic;">-ForegroundColor</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">red</span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">Could not locate the SharePoint Assemblies.`n</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp; Exit<br />}<br /><br /></span><span style="color: #008000;">#</span><span style="color: #008000;"> You must provide a site upon which to execute the cache reset.</span><span style="color: #008000;"><br /></span><span style="color: #0000FF;">if</span><span style="color: #000000;"> (</span><span style="color: #800080;">$args</span><span style="color: #000000;">.length </span><span style="color: #FF0000;">-ne</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">)<br />{<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #5F9EA0; font-weight: bold;">Write-Host</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">Expected 1 arguments:</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp; </span><span style="color: #5F9EA0; font-weight: bold;">Write-Host</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">&lt;site_url&gt;</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp; exit<br />}<br /><br /></span><span style="color: #800080;">$site_url</span><span style="color: #000000;"> </span><span style="color: #FF0000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">$args</span><span style="color: #000000;">[0]<br /><br /></span><span style="color: #0000FF;">try</span><span style="color: #000000;"><br />{<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #800080;">$site</span><span style="color: #000000;"> </span><span style="color: #FF0000;">=</span><span style="color: #000000;"> Get-SPSite -Identity </span><span style="color: #800080;">$site_url</span><span style="color: #000000;"> -ErrorAction Stop<br />}<br /></span><span style="color: #0000FF;">catch</span><span style="color: #000000;"><br />{<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #5F9EA0; font-weight: bold;">Write-Host</span><span style="color: #000000;"> </span><span style="color: #5F9EA0; font-style: italic;">-ForeGround</span><span style="color: #000000;"> </span><span style="color: #800000;">'</span><span style="color: #800000;">Red</span><span style="color: #800000;">'</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">$_</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp; </span><span style="color: #5F9EA0; font-weight: bold;">Write-Host</span><span style="color: #000000;"> </span><span style="color: #5F9EA0; font-style: italic;">-ForeGround</span><span style="color: #000000;"> </span><span style="color: #800000;">'</span><span style="color: #800000;">Red</span><span style="color: #800000;">'</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">Please correct the arguments and try again.`n`n</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp; Exit<br />}<br /><br /></span><span style="color: #800080;">$warning</span><span style="color: #000000;"> </span><span style="color: #FF0000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">This will clear the blob cache for all sites in this application, on all WFEs in the farm. `nPress 'y' to continue:</span><span style="color: #800000;">"</span><span style="color: #000000;"><br /><br /></span><span style="color: #5F9EA0; font-weight: bold;">Write-Host</span><span style="color: #000000;"> </span><span style="color: #5F9EA0; font-style: italic;">-ForeGround</span><span style="color: #000000;"> </span><span style="color: #800000;">'</span><span style="color: #800000;">Yellow</span><span style="color: #800000;">'</span><span style="color: #000000;"> </span><span style="color: #5F9EA0; font-style: italic;">-noNewLine</span><span style="color: #000000;"> </span><span style="color: #800080;">$warning</span><span style="color: #000000;"> <br /><br /></span><span style="color: #800080;">$key</span><span style="color: #000000;"> </span><span style="color: #FF0000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">$host</span><span style="color: #000000;">.</span><span style="color: #8B4513;">UI</span><span style="color: #000000;">.</span><span style="color: #8B4513;">RawUI</span><span style="color: #000000;">.</span><span style="color: #8B4513;">ReadKey</span><span style="color: #000000;">(</span><span style="color: #800000;">"</span><span style="color: #800000;">NoEcho,IncludeKeyUp</span><span style="color: #800000;">"</span><span style="color: #000000;">)<br /><br /></span><span style="color: #0000FF;">if</span><span style="color: #000000;"> (</span><span style="color: #800080;">$key</span><span style="color: #000000;">.Character </span><span style="color: #FF0000;">-ine</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">y</span><span style="color: #800000;">"</span><span style="color: #000000;">)<br />{<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #5F9EA0; font-weight: bold;">Write-Host</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">`nYou chose not to flush the cache.</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp; exit<br />}<br /><br /></span><span style="color: #5F9EA0; font-weight: bold;">Write-Host</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">`nFlushing...</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />[Microsoft.SharePoint.Publishing.PublishingCache]::FlushBlobCache(</span><span style="color: #800080;">$site</span><span style="color: #000000;">.WebApplication)<br /><br /></span><span style="color: #5F9EA0; font-weight: bold;">Write-Host</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">Flushed Cache for:</span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #800080;">$site</span><span style="color: #000000;">.WebApplication.Name<br /></span></p>]]></content:encoded>
    </item>
    <item>
      <title>What to do when your 32-bit .Net Framework 2.0 app won't run on x64</title>
      <link>https://docs.microsoft.com/archive/blogs/steveshe/what-to-do-when-your-32-bit-net-framework-2-0-app-wont-run-on-x64</link>
      <pubDate>Fri, 03 Apr 2009 15:48:00 GMT</pubDate>
      <dc:creator><![CDATA[Steve Sheppard - Microsoft]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/steveshe/2009/04/03/what-to-do-when-your-32-bit-net-framework-2-0-app-wont-run-on-x64/</guid>
      <description><![CDATA[I just ran into this problem trying to run Log Parser Lizard (FX 2.0 app using 32bit dlls) on my x64...]]></description>
      <content:encoded><![CDATA[<P>I just ran into this problem trying to run <A href="http://www.lizardl.com/PageHtml.aspx?lng=2&amp;PageId=18" mce_href="http://www.lizardl.com/PageHtml.aspx?lng=2&amp;PageId=18">Log Parser Lizard</A> (FX 2.0 app using 32bit dlls) on my x64 machine. It kept throwing BadImageFormatExceptions and crashing. A little research identified the problem, the app is marked to run on any CPU but it uses 32bit dlls. 
<P>Simple enough to fix if I can just figure out how to force it to run as a 32bit app. I found the answer <A href="http://blogs.intesoft.net/post/2007/12/Running-NET-Apps-in-32-bit-mode-on-64-bit-Windows.aspx" mce_href="http://blogs.intesoft.net/post/2007/12/Running-NET-Apps-in-32-bit-mode-on-64-bit-Windows.aspx">here</A>. In a nutshell you can use the CoreFlags.exe utility to force the app to run as a 32-bit application. </P>]]></content:encoded>
    </item>
    <item>
      <title>When you know the solution the problem is a lot easier to find…</title>
      <link>https://docs.microsoft.com/archive/blogs/steveshe/when-you-know-the-solution-the-problem-is-a-lot-easier-to-find</link>
      <pubDate>Fri, 27 Mar 2009 10:07:00 GMT</pubDate>
      <dc:creator><![CDATA[Steve Sheppard - Microsoft]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/steveshe/2009/03/27/when-you-know-the-solution-the-problem-is-a-lot-easier-to-find/</guid>
      <description><![CDATA[Yeah, that title sounds a little crazy but let me explain. The phenomena I am referring to is that...]]></description>
      <content:encoded><![CDATA[<P>Yeah, that title sounds a little crazy but let me explain. The phenomena I am referring to is that once you have identified the solution to a seemingly complex problem the problem is revealed to be simple. In my case the problem was really poor performance on the console of a very powerful box. I am currently using a 8 processor 16GB machine running Windows Server 2008 x64 as my primary “workstation”. </P>
<P>The main problem was that it had pretty severe video performance issues. It is also worth noting that this is one of several of these machines we have scattered around and nobody else seemed to be having these problems. </P>
<P>Here is a quick summary of the weird behaviors I was seeing:</P>
<OL>
<LI>One of the three monitors attached to this machine would go black and then repaint every time I mapped or unmapped a network drive. No kidding. </LI>
<LI>Unlocking the workstation, even immediately after locking it, resulted in a 50-120 second delay while it repainted my screen and generally sat there looking lame. </LI>
<LI>My VX-600 webcam which I use to chat with my 3 year old son when I am at going be at work late at night was totally unusable. Any time I started the camera the whole machine slowed to a complete crawl. </LI>
<LI>Scrolling anything in windows in the applications I use like IE, Word, Excel, WinDbg, and Visual Studio was jerky and very slow. </LI>
<LI>Dragging a window from one monitor to the others was jerky and sometimes would just stall the machine for 10-20 seconds. </LI>
<LI>Enabling the Aero desktop made the whole thing unusable. </LI></OL>
<P>I searched everywhere for problems with Windows Server 2008 and performance problems on the physical console. Why the physical console? Because I can use Remote Desktop to connect to this machine it runs just fine.</P>
<P>Based on all of these symptoms I figured it was the fault of the stock video card I had in the machine which uses a cheap NVidia Quadro GPU so I went out and got a new video card making for a matched set of GEForce 8600 SE cards in this machine. This configuration now matches my neighbors machine which doesn’t have these problems. In the end this change helped somewhat but performance was still pretty poor. I tried updating my video drivers, no help there either. Time to try some other stuff.</P>
<P>The next thing I did was switch my processor scheduling setting from “Background services” to “Programs”. This seemed to produce a slight improvement but not enough to make the machine usable from the console.</P>
<P>Next I shut down my Hyper-V VMs. I considered that perhaps they were chewing up resources that my machine desperately needed, despite the fact that I had 7GB-10GB of RAM free and CPU utilization was averaging 5%. That seemed to have no effect at all but since they just made it take longer each time I rebooted and I wasn’t using them right now I left them turned off.&nbsp; </P>
<P>Since it wasn’t any of the obvious stuff, next I went to the trusty ole Reliability and Performance Monitor. I created a new counter set to track the Memory, Processor, Processes and Threads objects. Surely if I have a performance problem on the physical console it will show up in one of those. </P>
<P>I started the log, locked my machine, waited 2 minutes and then unlocked it. It took about 55 seconds to repaint all the screens and get control of the apps. When I cracked open the log I could see that there were a few of my helper apps like Communicator, SnagIt and UltraMon taking a pretty big chunk of CPU for most of that unlock time.</P>
<P>I used MSConfig.exe to disable all of the autorun things I had loaded and rebooted. Performance was better. At this point I assumed that the performance I was seeing was as good as it was going to get so I set about determining which of autorun apps was killing what little performance I could get out of this machine. </P>
<P>I proceeded to enable the apps one at a time, reboot, and test the performance of locking and unlocking the machine. In the end I removed the webcam software as it seemed to be the only thing left when everything else was loaded and it still ran better than it had before.</P>
<P>After using the machine for an hour or so I locked it and came back ten minutes later. When I unlocked the machine it took more than a minute for me to get control of the desktop and even then it was pretty sluggish. Back to square one.</P>
<P>During all of this I have been talking with my peers to see what other ideas they might have. One of them suggested that maybe I had a desktop heap problem. Since I have run out of desktop heap in the past and I know what that looks like I didn’t really think that was it but I am desperate now so I doubled the amount of desktop heap for the interactive session to 40MB. No help there either, same behavior.</P>
<P>At this point I had pretty much resigned myself to using this machine in it’s current state until I have time to pave it and reinstall everything. A few minutes later one of my peers who has the exact same configuration was showing me how his machine performed. It was awesome! Unlocking his machine was pretty much instantaneous! What in the @#$%&amp;*%$# is wrong with mine? </P>
<P>It was then that he saved me by commenting that at one point he had installed Hyper-V and had some performance problems, not as bad as mine, but he had some, and he fixed them by uninstalling Hyper-V…</P>
<P>Now I’m thinking “Hyper-V can’t be my problem, I don’t even have any VMs running”…and then it dawned on me. Hyper-V uses a <A href="http://www.microsoft.com/windowsserver2008/en/us/hyperv-faq.aspx#VirtualMachineTechnology" target=_blank mce_href="http://www.microsoft.com/windowsserver2008/en/us/hyperv-faq.aspx#VirtualMachineTechnology">HyperVisor</A> to wedge in between the OS and the hardware. What could possibly go wrong there?</P>
<P><STRONG>Needless to say, 5 minutes later, after I had uninstalled Hyper-V and rebooted, my machine is as blistering fast as my co-worker’s!</STRONG></P>
<P>Now that I knew what the solution was was I did some quick searches for problems with Hyper-V video performance. I immediately found <A href="http://support.microsoft.com/kb/961661" target=_blank mce_href="http://support.microsoft.com/kb/961661">KB 961661</A>. For reference here is the cause section of the KB article:</P>
<P><EM>This issue occurs when a device driver or other kernel mode component makes frequent memory allocations by using the <B>PAGE_WRITECOMBINE</B> protection flag set while the hypervisor is running. When the kernel memory manager allocates memory by using the <B>WRITECOMBINE</B> attribute, the kernel memory manager must flush the Translation Lookaside Buffer (TLB) and the cache for the specific page. However, when the Hyper-V role is enabled, the TLB is virtualized by the hypervisor. Therefore, every TLB flush sends an intercept into the hypervisor. This intercept instructs the hypervisor to flush the virtual TLB. This is an expensive operation that introduces a fixed overhead cost to virtualization. Usually, this is an infrequent event in supported virtualization scenarios. However, some video graphics drivers may cause this operation to occur very frequently during certain operations. This significantly magnifies the overhead in the hypervisor.</EM></P>
<P>This is why I say, <STRONG>when you know the solution the problem is a lot easier to find</STRONG>.</P>]]></content:encoded>
    </item>
    <item>
      <title>RECAP: Thou shalt not touch my databases!</title>
      <link>https://docs.microsoft.com/archive/blogs/steveshe/recap-thou-shalt-not-touch-my-databases</link>
      <pubDate>Thu, 19 Mar 2009 15:56:35 GMT</pubDate>
      <dc:creator><![CDATA[Steve Sheppard - Microsoft]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/steveshe/2009/03/19/recap-thou-shalt-not-touch-my-databases/</guid>
      <description><![CDATA[Apparently some people, who shall remain nameless, still haven't gotten the memo that clearly states...]]></description>
      <content:encoded><![CDATA[<p>Apparently some people, who shall remain nameless, still haven't gotten the memo that clearly states that if you modify the WSS/MOSS databases in almost any way your farm will be rendered unsupported. What memo am I referring to you ask? I am referring to <a href="http://support.microsoft.com/kb/841057" target="_blank">KB841057</a>. This KB article represents our best efforts to spell out the kinds of changes that are and are not allowed to our databases.</p> <p>I'll try to add a little clarity from the perspective of someone who is often put in the position of telling customers that they have violated the rules laid out by this article. Before I begin let me state for the record that <strong><font color="#ff0000">these statements do not establish the official position of Microsoft Corporation. Recommendations and advice are those of the author or people and organizations the author trusts. The contents are provided "AS IS" with no warranties and confer no rights.</font> </strong></p> <p>Lets take a look at a couple of key points of this article and see if we can make it a little clearer. When the article says:</p> <p><em><font color="#000080">The products that are listed in the "Applies to" section were tested by using the existing structure and were approved for release based on that structure. Unless Microsoft protocol documentation is followed precisely, Microsoft cannot reliably predict the effect to the typical operation of these products when parties other than Microsoft support change the database or run stored procedures. Parties other than Microsoft support would include, but not be limited to, changes that are made by customers, by third-party vendors, or by consultants.</font></em> <p>I read this to say, "When developing custom solutions using our protocol documentation, unless you do things <em><strong>exactly </strong></em>as we do them there is a very, very, good chance that bad things will happen. We may make exceptions for specific updates to specific datasets at specific times for our support personnel. Support personnel are those persons employed by the Microsoft Commercial Office Support Systems group with the following titles: Support Engineer, Support Escalation Engineer, Escalation Engineer. If you do not work in the Microsoft Commercial Office Support Systems group AND posses one of the aforementioned titles then you are not permitted to directly modify our databases." </p> <p>Having said all of that I can tell you from lots of experience that we in the SharePoint support team very, very, rarely make direct modifications to the database. Even when it does happen it is only when the problem was introduced by the product itself and after all other means of correcting the problem have been exhausted.</p> <p>The article goes on to describe some, but not all, of the things that are not permitted:</p> <p><em><font color="#000080">Examples of such database changes include, but are not limited to, the following: </font></em> <ul> <li><em><font color="#000080">Adding database triggers </font></em> <li><em><font color="#000080">Adding new indexes or changing existing indexes within tables </font></em> <li><em><font color="#000080">Adding, changing, or deleting any primary or foreign key relationships </font></em> <li><em><font color="#000080">Changing or deleting existing stored procedures </font></em> <li><em><font color="#000080">Adding new stored procedures </font></em> <li><em><font color="#000080">Adding, changing, or deleting any data in any table of any of the databases for the products that are listed in the "Applies to" section unless Microsoft protocol documentation is followed exactly </font></em> <li><em><font color="#000080">Adding, changing, or deleting any columns in any table of any of the databases for the products that are listed in the "Applies to" section </font></em> <li><em><font color="#000080">Making any modification to the database schema </font></em> <li><em><font color="#000080">Adding tables to any of the databases for the products that are listed in the "Applies to" section </font></em> <li><em><font color="#000080">Changing the database collation</font></em></li></ul> <p>I think this list is pretty clear and while we specifically state that this is not an exhaustive list I'm pretty hard pressed to come up with something I might want to do to my database that is not covered by that list. In short, <strong>Do not touch the databases for the products associated with this article!</strong></p> <p>The article goes on to describe in pretty solid detail what happens if you decide to violate these prohibitions so I will not bother with interpreting them here.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Challenges of Script Debugging Using VS2008</title>
      <link>https://docs.microsoft.com/archive/blogs/steveshe/the-challenges-of-script-debugging-using-vs2008</link>
      <pubDate>Wed, 18 Mar 2009 17:02:16 GMT</pubDate>
      <dc:creator><![CDATA[Steve Sheppard - Microsoft]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/steveshe/2009/03/18/the-challenges-of-script-debugging-using-vs2008/</guid>
      <description><![CDATA[I recently worked on a problem that required me to debug the script for the HTML Editor control ion...]]></description>
      <content:encoded><![CDATA[<p>I recently worked on a problem that required me to debug the script for the HTML Editor control ion WSS. In the past I have always used the Microsoft Script Debugger and just selected "Break on next statement". In this case that was not really getting me where I needed to be so I decided to try to do it with VS2008. </p> <p>Unfortunately this presented a new set of problems because while I knew&nbsp; where the code was I wanted to debug I still didn't have a good way to catch it when it executed. A quick bit of web searching turned up this <a href="http://www.beansoftware.com/ASP.NET-Tutorials/Client-Script-Debugging.aspx">blog post</a> that briefly mentioned the "debugger;" instruction. Not being a JavaScript guy I was unaware of this command. It's simply invokes the debugger when it executes. How very handy :)</p> <p>I then edited my .js file in the \Layouts\1033 folder and added the line "debugger;" at the beginning of the function I wanted to work on. I then cleared the IE temporary internet files folder so I would easily get the new version of the .js file. I went through the steps to reproduce the problem and it opened Windows Script Debugger. This was not what I wanted. I wanted Visual Studio 2008 so I could use all the fancy features like hovering over variables and such. </p> <p>I speculated that the problem might be that when I installed the script debugger it stole the JIT settings from VS2008 so I uninstalled it and tried again. No joy. OK, it may have stolen them and not put them back when it was removed. </p> <p>It occurred to me that it may be that VS2008 is just not configured for JIT debugging of scripts. I checked my VS2008 debugging setting in the UI and found that I didn't have the Script setting enabled so I turned off the other two and enabled it:</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/steveshe/WindowsLiveWriter/TestpostfromLiveWriter_CDFB/image_4.png" original-url="http://blogs.msdn.com/blogfiles/steveshe/WindowsLiveWriter/TestpostfromLiveWriter_CDFB/image_4.png" target="_blank"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="374" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/steveshe/WindowsLiveWriter/TestpostfromLiveWriter_CDFB/image_thumb_1.png" original-url="http://blogs.msdn.com/blogfiles/steveshe/WindowsLiveWriter/TestpostfromLiveWriter_CDFB/image_thumb_1.png" width="644" border="0"></a> </p> <p>A quick test verified that this did not fix my problem.</p> <p>At this point one of my EE cronies (Rob Anderson) mentioned that he gets the JIT debugger popup when he does script debugging, I don't. This reminds me that historically the <a href="http://msdn.microsoft.com/en-us/library/5hs4b7a6(VS.80).aspx">AEDebug</a> key controlled this behavior. We check his registry settings and compare them to mine and discover that the likely reason is that I am missing the "Auto" key and value. Adding that fixed my problem and I am now happily JIT debugging javascript in Visual Studio 2008!</p> <p>&nbsp;</p> <p>Here is the proper settings for this to work on an x86 machine:</p> <p>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug<br><strong>"Auto"="1"<br></strong>"Debugger"="\"D:\\WINDOWS\\system32\\vsjitdebugger.exe\" -p %ld -e %ld"<br>"UserDebuggerHotKey"=dword:00000000  <p>In my case these settings needed to be transposed to the x64 registry location:  <p>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug&nbsp; <p>Other than the location, the setting are the same.  ]]></content:encoded>
    </item>
    <item>
      <title>How do I tune the MOSS Object Cache for performance and economy?</title>
      <link>https://docs.microsoft.com/archive/blogs/steveshe/how-do-i-tune-the-moss-object-cache-for-performance-and-economy</link>
      <pubDate>Thu, 12 Mar 2009 15:36:00 GMT</pubDate>
      <dc:creator><![CDATA[Steve Sheppard - Microsoft]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/steveshe/2009/03/12/how-do-i-tune-the-moss-object-cache-for-performance-and-economy/</guid>
      <description><![CDATA[Tuning the size of the&nbsp;MOSS Object Cache is done via the Max Cache Size settings on the Site...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face=Calibri>Tuning the size of the&nbsp;MOSS Object Cache is done via the Max Cache Size settings on the Site Settings &gt; Object Cache Settings page. It is important to recognize that this maximum cache size setting is a limit and not a static value. For example; Just because the maximum cache size setting for the Object Cache is configured to 100MB does not mean that it will consume 100MB of memory at startup. It simply means that if the cache were to exceed 100MB it will be compacted to reduce its memory consumption to a level below that maximum value.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face=Calibri>For purposes of this discussion we will categorize cache compaction rates into three categories, unacceptable, acceptable and optimal.&nbsp;&nbsp; A cache compaction rate of more than 6 per hour should be considered unacceptable. A rate of between 2 and 6 compactions per hour is acceptable and between 0 and 1 cache compactions per hour is optimal. You should only target the optimal level of cache compactions if you have sufficient amount physical memory installed on your servers to achieve this goal and still have sufficient free physical memory remaining on the server to support other critical system operations.<o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face=Calibri>&nbsp;<o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face=Calibri>You should regularly monitor for cache flushes because they are extremely expensive in terms of cache performance impact. A cache flush results in the ejection of all cache contents. Cache flushes are triggered by the creation, deletion or moving of a web. They can be monitored via the "SharePoint Publishing Cache/Total number of cache flushes" counter in Performance Monitor.&nbsp; If you are seeing cache flushes throughout the production day you should reconsider how you manage webs during those hours. <o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face=Calibri>&nbsp;<o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face=Calibri>Based on these considerations we have developed the following guidance for how to tune the Object Cache size for acceptable performance using the "SharePoint Publishing Cache / Total number of cache compactions" performance counter. <o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face=Calibri>&nbsp;<o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face=Calibri>We feel this level of cache performance will meet an economical customers performance needs without unduly sacrificing their limited memory resources. The steps to achieve this are fairly straightforward and must be applied in an iterative fashion until the desired level of performance is achieved. The recommended steps are:<o:p></o:p></FONT></FONT></P>
<P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>1.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><FONT face=Calibri>Start with the default cache settings of 100MB on the site collection. <o:p></o:p></FONT></FONT></P>
<P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>2.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><FONT face=Calibri>Capture at least 8 hours worth of performance data from the WFEs while the system is under a typical load using the "SharePoint Publishing Cache/Total number of cache compactions" counter. Since we are interested in tracking compactions per hour it is acceptable to <SPAN style="mso-spacerun: yes">&nbsp;</SPAN>capture this data at 1 minute intervals. <o:p></o:p></FONT></FONT></P>
<P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>3.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><FONT face=Calibri>After analysis of the data, if we are exceeding the threshold for acceptable cache compactions we will need to add an additional 50MB to the Maximum Cache Size value and run the test again. <o:p></o:p></FONT></FONT></P>
<P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>4.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><FONT face=Calibri>We should continue this process until such time as we have achieved an acceptable cache compaction rate. <o:p></o:p></FONT></FONT></P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>New Database Maintenance whitepaper released</title>
      <link>https://docs.microsoft.com/archive/blogs/steveshe/new-database-maintenance-whitepaper-released</link>
      <pubDate>Mon, 03 Mar 2008 14:32:00 GMT</pubDate>
      <dc:creator><![CDATA[Steve Sheppard - Microsoft]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/steveshe/2008/03/03/new-database-maintenance-whitepaper-released/</guid>
      <description><![CDATA[We have just realeased a whitepaper that describes the recommended maintenance strategies for the...]]></description>
      <content:encoded><![CDATA[<P>We have just realeased a whitepaper that <SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: PMingLiU; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">describes the recommended maintenance strategies for the databases that host content and configuration settings for SharePoint Products and Technologies. You can get it <A class="" title=here href="http://go.microsoft.com/fwlink/?LinkId=111531&amp;clcid=0x409" mce_href="http://go.microsoft.com/fwlink/?LinkId=111531&amp;clcid=0x409">here</A>. It covers:</SPAN></P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: PMingLiU; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">
<P class=MsoListBullet style="MARGIN: 0in 0in 10pt 0.25in; mso-list: l0 level1 lfo1; tab-stops: list .25in"><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Checking database integrity.</P>
<P class=MsoListBullet style="MARGIN: 0in 0in 10pt 0.25in; mso-list: l0 level1 lfo1; tab-stops: list .25in"><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Defragmenting indexes by either reorganizing them or rebuilding them. </P>
<P class=MsoListBullet style="MARGIN: 0in 0in 10pt 0.25in; mso-list: l0 level1 lfo1; tab-stops: list .25in"><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Setting the fill factor for a server. </P>
<P class=MsoListBullet style="MARGIN: 0in 0in 10pt 0.25in; mso-list: l0 level1 lfo1; tab-stops: list .25in"><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Shrinking databases to recover unused disk space.</SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>Welcome Roger Lamb to the blog space</title>
      <link>https://docs.microsoft.com/archive/blogs/steveshe/welcome-roger-lamb-to-the-blog-space</link>
      <pubDate>Fri, 15 Feb 2008 12:41:00 GMT</pubDate>
      <dc:creator><![CDATA[Steve Sheppard - Microsoft]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/steveshe/2008/02/15/welcome-roger-lamb-to-the-blog-space/</guid>
      <description><![CDATA[For his first post he has provided a bunch of examples of dispose patterns for SharePoint that will...]]></description>
      <content:encoded><![CDATA[<P>For his first post he has provided a bunch of examples of dispose patterns for SharePoint that will be really helpful for anyone trying to write custom web parts for SharePoint and wanting to avoid all the myriad ways you can leak objects:</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Calibri size=3><A class="" title="SharePoint 2007 and WSS 3.0 Dispose Patterns by Example" href="http://blogs.msdn.com/rogerla/archive/2008/02/12/sharepoint-2007-and-wss-3-0-dispose-patterns-by-example.aspx" mce_href="http://blogs.msdn.com/rogerla/archive/2008/02/12/sharepoint-2007-and-wss-3-0-dispose-patterns-by-example.aspx">SharePoint 2007 and WSS 3.0 Dispose Patterns by Example</A></FONT></P>]]></content:encoded>
    </item>
    <item>
      <title>Overlapped Recycling And SharePoint: What Are The 64-bit Settings?</title>
      <link>https://docs.microsoft.com/archive/blogs/steveshe/overlapped-recycling-and-sharepoint-what-are-the-64-bit-settings</link>
      <pubDate>Sun, 23 Dec 2007 12:24:00 GMT</pubDate>
      <dc:creator><![CDATA[Steve Sheppard - Microsoft]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/steveshe/2007/12/23/overlapped-recycling-and-sharepoint-what-are-the-64-bit-settings/</guid>
      <description><![CDATA[We strongly recommend that our customers move to 64-bit servers for MOSS and WSSv3 unless there is...]]></description>
      <content:encoded><![CDATA[<P>We strongly recommend that our customers move to 64-bit servers for MOSS and WSSv3 unless there is some significant reason that prevents it. It is also worth noting that <A href="http://technet2.microsoft.com/Office/en-us/library/91f47832-c84b-4a25-a703-41971c1c479a1033.mspx?mfr=true" mce_href="http://technet2.microsoft.com/Office/en-us/library/91f47832-c84b-4a25-a703-41971c1c479a1033.mspx?mfr=true">according to our recent documentation</A> this will definitely be the last version of SharePoint to run on 32-bit hardware. This brings up the question of whether or not you need to configure overlapped recycling on 64-bit servers.</P>
<P>While we have quite a few customers already on 64-bit servers I have not seen a lot of problems that would be addressed by these settings but I have seen a couple. This tells me that there is still value in configuring these settings on 64-bit servers. Unfortunately, I don’t have any solid data to make recommendations on what those settings should be. </P>
<P>That means the best I can offer is some thought on how I would figure it out. I would start by enabling a scheduled recycle each day that happens about 30 minutes before my first users start work. This makes good sense as I consider a daily recycle to be good housekeeping. As mentioned in a previous post, recycling the worker process cleans out fragmentation and results in a more orderly workspace. </P>
<P>Next, I would get Performance Monitor data for my servers for a period of two weeks. These two weeks would ideally contain a few days of my highest user loads. It is also important that during these two weeks that I’m not already experiencing problems like crashes or memory allocation related errors in the ULS or Application Event Logs. </P>
<P>While I can’t tell you exactly what days are in your business are the most intensive I can give an example to guide you. Many companies function on a monthly cycle where their peak loads occur at the end of each month. In this type of business I would gather my data for the last week of the current month and the first week on the next month. This would probably give me a solid representation of my heaviest loads and my lightest loads. </P>
<P>In my scenario I’m going to guess 30% growth over the max I see in my Performance Monitor data is about the most to I want to allow before I recycle my worker process. I will be using that number in the calculations below. </P>
<P>Once I have my data I would then determine the maximum size that the worker process ever reached over that two week period in terms of Process/Private Bytes and Process/Virtual Bytes. I would also gather the Memory/Available MBytes value from those same times where I saw the maximum values. </P>
<P>Once I had these values I would first determine if I have enough free physical memory to enable overlapped recycling. To determine this I would compare the maximum Private Bytes value to the available MBytes value and if Available MBytes was not at least equal to ((Private Bytes value * 1.3)+300MB) I would not enable overlapped recycling until I had added more physical memory to the system. </P>
<P>Assuming I have enough free physical memory I would then use those maximum observed values plus my 30% growth factor to come up with the settings for the “Maximum Memory Used” and “Maximum Virtual Bytes” recycle settings. Here is an example: </P>
<TABLE class="" cellSpacing=0 cellPadding=2 width=310 border=1>
<TBODY>
<TR>
<TD class="" vAlign=top width=229>Maximum Observed Private Bytes </TD>
<TD class="" vAlign=top width=79>2000MB </TD></TR>
<TR>
<TD class="" vAlign=top width=224>Maximum Observed Virtual Bytes </TD>
<TD class="" vAlign=top width=79>4000MB</TD></TR></TBODY></TABLE>
<P>Using these numbers I would configure the IIS Application Pool using the following settings: </P>
<TABLE class="" cellSpacing=0 cellPadding=2 width=310 border=1>
<TBODY>
<TR>
<TD class="" vAlign=top width=225>Maximum Memory Used Value </TD>
<TD class="" vAlign=top width=83>2600MB </TD></TR>
<TR>
<TD class="" vAlign=top width=224>Maximum Virtual Bytes Value </TD>
<TD class="" vAlign=top width=83>5200MB</TD></TR></TBODY></TABLE>
<P><STRONG>UPDATE 6/19/2008</STRONG>&nbsp;</P>
<P>I thought it was worth coming back to this post and updating it. As of this date we have not seen any significant problem in this area with customers running on 64-bit platforms. Most of the customers I am aware of on 64-bit platforms are not using memory based recycling settings. I do want to say that I would still reccomend a scheduled nightly recycle because&nbsp;it will help reduce any possiblity of problems caused by fragmentation.</P>
<P mce_keep="true">&nbsp;</P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Overlapped Recycling And SharePoint: Tracking Recycle Events</title>
      <link>https://docs.microsoft.com/archive/blogs/steveshe/overlapped-recycling-and-sharepoint-tracking-recycle-events</link>
      <pubDate>Sun, 23 Dec 2007 11:39:00 GMT</pubDate>
      <dc:creator><![CDATA[Steve Sheppard - Microsoft]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/steveshe/2007/12/23/overlapped-recycling-and-sharepoint-tracking-recycle-events/</guid>
      <description><![CDATA[As part of your efforts to properly configure your server for overlapped recycling&nbsp; you will...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>As part of your efforts to properly configure your server for overlapped recycling<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>you will obviously need to know when a recycle takes place. It also makes sense that you would want to know about ALL recycle events, not just overlapped ones. To this end you will need to configure your IIS Application Pool to track all of these events in the Event Logs. Here is how you how do this:</FONT></P>
<P class=ListNum1 style="MARGIN: 4pt 9.95pt 0pt 0.5in"><SPAN style="mso-bidi-font-family: Arial; mso-fareast-font-family: Arial"><SPAN style="mso-list: Ignore">1.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Click <B style="mso-bidi-font-weight: normal">Start</B>, click <B style="mso-bidi-font-weight: normal">Run</B>, and then type <B style="mso-bidi-font-weight: normal">cmd</B> at the command prompt. </P>
<P class=ListNum1 style="MARGIN: 4pt 9.95pt 0pt 0.5in"><SPAN style="mso-bidi-font-family: Arial; mso-fareast-font-family: Arial"><SPAN style="mso-list: Ignore">2.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Change to the directory where <B style="mso-bidi-font-weight: normal">Adsutil</B> is located. The following is the default directory location: %SYSTEMROOT%\Inetpub\AdminScripts</P>
<P class=ListNum1 style="MARGIN: 4pt 9.95pt 0pt 0.5in"><SPAN style="mso-bidi-font-family: Arial; mso-fareast-font-family: Arial"><SPAN style="mso-list: Ignore">3.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Type the following command:</P>
<P class=list4 style="MARGIN: 0in 3.75pt 0pt 21.75pt"><B><SPAN style="FONT-SIZE: 8.5pt; COLOR: black; FONT-FAMILY: 'Courier New'"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>&nbsp;</o:p></SPAN></B></P>
<P class=list4 style="MARGIN: 0in 3.75pt 0pt 0.5in"><B><SPAN style="COLOR: black; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt"><FONT size=3>cscript adsutil.vbs Set w3svc/AppPools/[YourAppPoolName]/LogEventOnRecycle 255 <o:p></o:p></FONT></SPAN></B></P>
<P class=TextinList2 style="MARGIN: 3pt 0in 3pt 0.5in"><FONT face="Times New Roman" size=3>In the command above, replace [YourAppPoolName] with the actual name of the application pool upon which you want to enable the events.</FONT></P>
<P class=TextinList2 style="MARGIN: 3pt 0in"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<TABLE class=MsoNormalTable style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: auto auto auto 3.75pt; BORDER-LEFT: medium none; WIDTH: 97%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid #DDDDDD .75pt; mso-yfti-tbllook: 1184" cellSpacing=0 cellPadding=0 width="97%" border=1 class="MsoNormalTable">
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes">
<TD class="" style="BORDER-RIGHT: #dddddd 1pt solid; PADDING-RIGHT: 3.75pt; BORDER-TOP: #dddddd 1pt solid; PADDING-LEFT: 3.75pt; BACKGROUND: #efeff7; PADDING-BOTTOM: 3.75pt; BORDER-LEFT: #dddddd 1pt solid; PADDING-TOP: 3.75pt; BORDER-BOTTOM: #c8cdde 1pt solid; mso-border-alt: solid #DDDDDD .75pt; mso-border-bottom-alt: solid #C8CDDE .75pt" vAlign=bottom>
<P class=MsoNormal style="MARGIN: 3.75pt 0in"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 8.5pt; COLOR: #000066; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id=Picture_x0020_1 style="VISIBILITY: visible; WIDTH: 7.5pt; HEIGHT: 7.5pt; mso-wrap-style: square" alt="Note" type="#_x0000_t75" o:spid="_x0000_i1025"><v:imagedata o:title="Note" src="file:///E:\Users\steveshe.000\AppData\Local\Temp\msohtmlclip1\01\clip_image001.gif" mce_src="file:///E:\Users\steveshe.000\AppData\Local\Temp\msohtmlclip1\01\clip_image001.gif"><FONT face="Times New Roman" size=3></FONT></v:imagedata></v:shape></SPAN></B><B><SPAN style="FONT-SIZE: 8.5pt; COLOR: #000066; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'">Note:<o:p></o:p></SPAN></B></P></TD></TR>
<TR style="mso-yfti-irow: 1; mso-yfti-lastrow: yes">
<TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3.75pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 3.75pt; BACKGROUND: #f7f7ff; PADDING-BOTTOM: 3.75pt; BORDER-LEFT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .75pt; mso-border-top-alt: solid #D5D5D3 .75pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>If your application pool name has a space in it, for example, “SharePoint- 80”, you must include double quotes around the metabase path in the command. Here is an example:</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>cscript adsutil.vbs Set "w3svc/AppPools/SharePoint - 80/LogEventOnRecycle" 255 </FONT></P></TD></TR></TBODY></TABLE>
<P class=TextinList2 style="MARGIN: 3pt 0in"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>For those among you who are curious as to the details of what this all means, here are some links to explain:</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><A href="http://go.microsoft.com/fwlink/?LinkId=105925&amp;clcid=0x409" mce_href="http://go.microsoft.com/fwlink/?LinkId=105925&amp;clcid=0x409"><FONT face=Calibri color=#0000ff size=3>How to modify Application Pool Recycling events in IIS 6.0</FONT></A><BR><A href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/6f43da84-38b0-422b-aa2b-195643d05d22.mspx?mfr=true" mce_href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/6f43da84-38b0-422b-aa2b-195643d05d22.mspx?mfr=true"><FONT face=Calibri size=3>LogEventOnRecycle Metabase Property (IIS 6.0)</FONT></A><SPAN style="FONT-SIZE: 15.5pt; COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-font-kerning: 18.0pt"><o:p></o:p></SPAN></P>]]></content:encoded>
    </item>
  </channel>
</rss>