tag:blogger.com,1999:blog-21014092082996897762024-03-06T16:04:37.277+08:00Swee Ching's Tech NotesSwee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.comBlogger71125tag:blogger.com,1999:blog-2101409208299689776.post-65808353121465691732011-06-25T16:52:00.001+08:002011-06-25T16:52:06.966+08:00Configuring SharePoint 2010 FBA<p>I have not been making good acquaintance with SharePoint 2010. Time to strengthen my relationship with my old pal…</p> <p>Just few days back I were tasked to estimate some effort in building a simple extranet website. SharePoint 2010 is one of the option considered. But the user login database has to be separate from the organisation’s AD. Therefore, Form Based Authentication will be required. Now, setting up FBA in in SharePoint 2010 is different from MOSS 2007. So a refresh on that skill is required, by trying it out myself on my SharePoint 2010 test servers.</p> <p>First step is to start with getting FBA to work in the most simplest form possible. That means making use of the good old ASP.NET Membership database which comes with .NET 2.0. That part of the work are still the same, but the similarity ends there. After reading a few blogs that doesn’t help me much, I found this <a href="http://donalconlon.wordpress.com/2010/02/23/configuring-forms-base-authentication-for-sharepoint-2010-using-iis7/">blog entry</a> from <strong><a href="http://donalconlon.wordpress.com/">Donal Conlon</a></strong>, which provided me the best step-by-step I saw so far, which allow me to successfully get the FBA work on my SharePoint test servers. Thanks a lot!</p> <p>Also, I found that <strong><a href="http://sharepoint2010fba.codeplex.com/">CodePlex</a></strong> has some webparts for FBA user management. </p> <p>And, some more in-depth <strong><a href="http://www.4guysfromrolla.com/articles/120705-1.aspx">Membership, Role and Profile stuff from 4GuysFromRolla</a></strong>, which provide some good foundation refresh for me as well. </p> Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com0tag:blogger.com,1999:blog-2101409208299689776.post-59573511314037313552011-06-25T16:35:00.001+08:002011-06-25T16:39:12.559+08:00Prevent SSRS Parameter Auto Postback, again…<p>In my <a href="/2010/03/prevent-ssrs-parameter-auto-postback.html">last entry</a> (wow, that was over a year ago...), I was troubleshooting some SSRS parameter post back bug that was never fixed in SSRS 2005, and manage to worked around it. </p> <p>In my new assignment, me and my team are building SSRS 2008 R2 reports. The new version of SSRS 2008 R2 now has better control on whether changing a parameter causes postbacks to the server or not. This can be set at per report parameter level, via the advanced properties:</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbHcHvJSu3kPya_E535eVXc9FW2_uC8o-xf31BlP6-cqEG8QM6QH1S1K1syw9XFpq7QiRBs0G3bbvdnsBsAX5eSPjNBteQzmvPd0QCrFnXcMcqsyr7kEe7I8_stcrJceJmDgvZKONryEQ/s1600-h/image%25255B3%25255D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSEp3l9Bay1-VkrfipzPYxoD7w5g2C1IAvy3PUaFqtqYsXt-omJQJHkLr5_CuzcekavsEC6sdOMSFjDtY_FKsPw5EN8AZqT47rpAqNNSc-yZ8522QTWlFOU-PUR6APZikO4vJWjF_RPHo/?imgmax=800" width="624" height="234" /></a></p> <p>However, long time enemy came back again to haunt me and my team. Even if the above option were set to <strong>Never refresh</strong>, the postback is still happening. After some pocking around on and off for several days, finally we found out the reason. </p> <p>We discovered that some other reports which has some parameters that does not have default values set, does not perform postback when its value were modified. The default values were set directly by typing in the default value, as per below screenshot.</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2j7EIJSjyY-LfHp9wFijlJFLYRV1Eol6MC-bPDfMBQ_aw8OTtpuop1IlYYhBqmHF07JsR4C9B77lKRthr_hCPcGCcm722YtPsTyaI5Es96Ye06GhnBCAL4YLPQqShOSoEV15m-xiCz-Q/s1600-h/image%25255B12%25255D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlhkWxAN7vGH8oGppioe0ui979PCIX1zcXze2xahAxBMhb9xs21eDgktQAiVzoZtkTcrYRrLOIr0pX0tWUPUkwwCqKFQA22zyHWnc4EOVG0TYE14Sirg6m59pL1eESEsaTz9ggQTQYUJc/?imgmax=800" width="546" height="458" /></a></p> <p>Question is, should we enter the “Label” name here, or the “Value” value here? (Label is what the user sees, Value is what is used as the parameter value at the back to pass into SELECT statement). Anyway, it doesn’t matter. As long as you set a default value like this, it will perform a postback.</p> <p>To solve this problem, we can up with a workaround (yes, another one. When will MS solve this once and for all?). We create a <strong>Dataset</strong> to return desired single default value (e.g. <strong>DefaultCountry</strong> Dataset). The Dataset doesn’t even need to query the database, as long as it returns the default value that you want (e.g. SELECT ‘MY’ as CountryName). Then, use it to set the value to the Parameter as the default value. </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuIaho2a3DWVahosDNWxBZjagyHFk8WJqUjyIIVR4luWvtzG5xBKXE6DATz0HqWXAQ4fty9qpreyWDwzVzXrVCfeaCrCuMm0LPVpEyNJQzfxb4LQGuwm9kY9OgPMfj3sR5jhdmk7lm9UI/s1600-h/image%25255B22%25255D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2bI4OtgpzEcMRJC11GxDrWugSHHrCUC9zN4klhsx6tYjMmvh9SmSy1WZkpNUZPX16dnQq7adBvKLd3QHDdsXJgdhc2ReT5aSpNJmjqAAAhD_HsRPo8ZIp8ipEZ7IOp98EPYocOtIK7bA/?imgmax=800" width="545" height="464" /></a></p> <p>With that, no more auto postbacks when selecting report parameters.</p> Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com0tag:blogger.com,1999:blog-2101409208299689776.post-72143169388375002602010-03-02T14:53:00.001+08:002010-03-02T14:53:51.435+08:00Prevent SSRS Parameter Auto Postback<div class=WordSection1><p class=MsoNormal><span lang=EN-US>For some reason, the SSRS 2005 report that I’ve deployed on MOSS 2007 perform auto postback whenever a particular drop down parameter value is changed. It’s just a normal text drop down parameter with a default value. Some online post says not to use the “=SomeText” syntax, but mine is just the text directly set as the default value.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Luckily my colleague gave me the tip that the sequence of parameters might cause this behavior. Although there are no dependency between all my parameters, he advised me to put parameters that are dynamic at the top first, follow by the static ones at the bottom. That solved my problem!<o:p></o:p></span></p></div>Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com7tag:blogger.com,1999:blog-2101409208299689776.post-56221636214388261602010-01-15T18:51:00.008+08:002010-01-15T19:20:17.557+08:00Pivot/Unpivot or Transpose in SQL 2005 and SSIS 2005<p class="MsoNormal"><span style="font-family:verdana;"><span style="color:black;">Lately I’ve been working on a project to bring a suite of Excel Reports to the new age, via SSIS and SSRS. (yeah, boring stuff, not mentioning the times spent to understand the user actions, VBA macros, cell formulae etc, such a pain!!!).</span><span style="color:#1f497d;"> </span><span style="color:black;">Anyway, one of the existing manual actions from the users of the Excel which I need to emulate in the new system is the transpose copy paste action. At last, something that I haven’t done before and it’s interesting to me, in a sense.</span></span></p><p class="MsoNormal"><span style="font-family:verdana;">After some research, there’s actually quite a lot of way to achieve the result, either using <b>SSIS Data Flow</b> task of Pivot/Unpivot, or just pure Transact-SQL<span style="color:#1f497d;"> </span><span style="color:black;">approach</span>.<?xml:namespace prefix = o /><o:p> </o:p></span></p><p class="MsoNormal"><span style="font-family:verdana;"><b><u>The SSIS Method</u></b><o:p></o:p></span></p><p class="MsoNormal"><span style="font-family:verdana;">Can’t explain better than what this <span style="color:#1f497d;"><a href="http://blogs.msdn.com/philoj/archive/2007/11/10/transposing-rows-and-columns-in-sql-server-integration-services.aspx">blog</a></span> has already mentioned<span style="color:#1f497d;">. </span><span lang="EN-US">It involves a clever use of both Pivot and Unpivot Data Flow tasks. The example given provides the basic concept for me to tackle my slightly complex scenario.</span></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><b><u><span lang="EN-US"><span style="font-family:verdana;">Transact-SQL Method<o:p></o:p></span></span></u></b></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US"><span style="font-family:verdana;">Again, no point for me to reinvent the wheel. This <span style="color:#1f497d;"><a href="http://pratchev.blogspot.com/2007/04/pivoting-data-in-sql-server.html">blog</a></span> has given the best options available. On top of that, MSDN also provide good examples on how to use the </span><a href="http://msdn.microsoft.com/en-us/library/ms177410.aspx"><span style="font-family:verdana;">PIVOT and UNPIVOT command</span></a><span style="font-family:verdana;">.</span></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span style="font-family:Verdana;"></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span style="font-family:Verdana;"></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><b><u><span lang="EN-US"><span style="font-family:verdana;">My Implementation<o:p></o:p></span></span></u></b></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US"><span style="font-family:verdana;">After the research, time to get the job done. So here’s <span style="color:black;">I need to do</span><span style="color:#1f497d;">:</span></span></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US"><span style="font-family:verdana;"><span style="color:#1f497d;"></span><o:p></o:p></span></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;">I have an <span style="color:black;">E</span>xcel table that looks like this:</span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span style="font-family:Verdana;"></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span style="font-family:verdana;"></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;color:#1f497d;"><o:p></o:p></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><b><span lang="EN-US"><span style="font-family:verdana;">Date: 15/1/2010<span style="color:#1f497d;"><o:p></o:p></span></span></span></b></p><div class="WordSection1"><table style="BORDER-COLLAPSE: collapse" class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 63.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" rowspan="2" width="85"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Category<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 96.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="128" colspan="2"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Product A<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 106.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="142" colspan="2"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Product B<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 106.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="142" colspan="2"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Product C<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 106.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="142" colspan="2"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Product D<o:p></o:p></span></span></b></p></td></tr><tr><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 49.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="66"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">In<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 46.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="62"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Out<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">In<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Out<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">In<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Out<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">In<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Out<o:p></o:p></span></span></b></p></td></tr><tr><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 63.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="85"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Category <span style="color:black;">1<o:p></o:p></span></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 49.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="66"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 46.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="62"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td></tr><tr><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 63.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="85"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Category 2<span style="color:black;"><o:p></o:p></span></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 49.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="66"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 46.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="62"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td></tr><tr><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 63.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="85"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Category <span style="color:black;">3<o:p></o:p></span></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 49.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="66"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 46.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="62"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 53.2pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="71"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p></td></tr></tbody></table></div><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;color:#1f497d;"><o:p></o:p></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US"><span style="font-family:verdana;"></span></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US"><span style="font-family:verdana;">I need to transform it into this first:<o:p></o:p></span></span></p><div class="WordSection1"><table style="BORDER-COLLAPSE: collapse" class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 98.85pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="132"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Date<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 98.85pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="132"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Product Name<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 92.15pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="123"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Category<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 77.95pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="104"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Balance<o:p></o:p></span></span></b></p></td></tr><tr><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 98.85pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="132"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">15/1/2010<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 98.85pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="132"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">Product A<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 92.15pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="123"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">Category 1<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 77.95pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="104"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">{In-Out}<o:p></o:p></span></span></p></td></tr><tr><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 98.85pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="132"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">15/1/2010<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 98.85pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="132"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">Product B<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 92.15pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="123"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">Category 2<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 77.95pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="104"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">{In-Out}<o:p></o:p></span></span></p></td></tr><tr><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 98.85pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="132"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">15/1/2010<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 98.85pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="132"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">Product C<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 92.15pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="123"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">Category 3<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 77.95pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="104"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">{In-Out}<o:p></o:p></span></span></p></td></tr></tbody></table></div><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US"><span style="font-family:verdana;"></span></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US"><span style="font-family:verdana;">Then into these tables for SSRS consumption:<o:p></o:p></span></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><b><span lang="EN-US"><span style="font-family:verdana;">Product A<o:p></o:p></span></span></b></p><div class="WordSection1"><table style="BORDER-COLLAPSE: collapse" class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Date<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Category 1<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Category 2<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Category 3<o:p></o:p></span></span></b></p></td></tr><tr><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">15/1/2010<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">{Balance Value 1}<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">{Balance Value 2}<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">{Balance Value 3}<o:p></o:p></span></span></p></td></tr></tbody></table></div><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><b><span lang="EN-US"><span style="font-family:verdana;">Product B<o:p></o:p></span></span></b></p><div class="WordSection1"><table style="BORDER-COLLAPSE: collapse" class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Date<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Category 1<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Category 2<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Category 3<o:p></o:p></span></span></b></p></td></tr><tr><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">15/1/2010<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">{Balance Value 1}<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">{Balance Value 2}<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">{Balance Value 3}<o:p></o:p></span></span></p></td></tr></tbody></table></div><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><b><span lang="EN-US"><span style="font-family:verdana;">Product C<o:p></o:p></span></span></b></p><div class="WordSection1"><table style="BORDER-COLLAPSE: collapse" class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Date<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Category 1<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Category 2<o:p></o:p></span></span></b></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><b><span lang="EN-US"><span style="font-family:verdana;">Category 3<o:p></o:p></span></span></b></p></td></tr><tr><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">15/1/2010<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">{Balance Value 1}<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">{Balance Value 2}<o:p></o:p></span></span></p></td><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 119.7pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="160"><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:verdana;">{Balance Value 3}<o:p></o:p></span></span></p></td></tr></tbody></table></div><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;">I decided to use both SSIS and Transact-SQL PIVOT for my solution. Reason is to avoid having to keep multiple Product tables. In the example shown above, I would need 3 tables for each product. Imagine having more than that…</span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span style="font-family:verdana;"></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><strong><u><span style="font-family:verdana;"></span></u></strong></p>
<p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><strong><u><span style="font-family:verdana;">Part A: SSIS Unpivot</span></u></strong></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;">First off, here’s my SSIS Data Flow:</span></p><div class="WordSection1"><span style="font-family:verdana;">
</span></div><p class="WordSection1" align="center"><span style="font-family:verdana;"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieP0Bs34H64FpbzQyeg9SX2CzuxnT2vx0AN5ZE0lzLIWzuAT2xnPyddzIUY6Ew36YSvObbyiSZfC9ehW9Xggra49aA_a3_btMztQXnm4ZP3dDRLIubdyzJwiFzphhuLSAj0d1vOp6BYuY/" /></span></p><div class="WordSection1"><span style="font-family:verdana;">
</span></div><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US"><span style="font-family:verdana;color:#1f497d;"><o:p></o:p></span></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p><p style="TEXT-INDENT: -18pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 36pt; MARGIN-RIGHT: 0cm; mso-margin-top-alt: 0cm; mso-list: l117 level1 lfo4" class="WordSection1"><span style="font-family:verdana;"><span lang="EN-US"><span style="mso-list: Ignore">1.<span style="FONT: 100% 'Times New Roman'"> </span></span></span><span lang="EN-US">Because I can’t Unpivot both [In] and [Out] columns at the same time (SSIS limitation), I have to Unpivot them separately, then join them back later through the Merge Join task.<o:p></o:p></span></span></p><p style="TEXT-INDENT: -18pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 36pt; MARGIN-RIGHT: 0cm; mso-margin-top-alt: 0cm; mso-list: l117 level1 lfo4" class="WordSection1"><span style="font-family:verdana;"><span lang="EN-US"><span style="mso-list: Ignore">2.<span style="FONT: 100% 'Times New Roman'"> </span></span></span><span lang="EN-US"><strong>Merge Join </strong>task requires all the data flow coming into it sorted with the same key(s). It will sort of being smart to detect if the data flow reaching it is sorted or not. If it is not, then it will not run and you'll get an error. This is typically solved by using the Sort task first, but since I know my data from the Excel is sorted, I avoid using the performance taxing Sort task. Instead, I set the Unpivot task’s output properties of <b>IsSorted</b> to <b>True</b>, then, in the Unpivot Output columns, set the <b>SortKeyPosition</b> of the sorted column to 1. (If more columns were used to sort, set the other columns with <b>SortKeyPosition</b>=2 or 3 or so forth). Screenshot below shows the Avanced Editor of the Unpivot task, where I set the <strong>IsSorted</strong> property.</span></span></p><div class="WordSection1"><span style="font-family:verdana;">
</span></div><p class="WordSection1" align="center"><span style="font-family:verdana;"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC8qn1zNnoZEzEu5w9VSResQWrujF5BCVuz2SAcjinu-25G9L5XRtolC7y_KSvIwnvMmfvZaVnLqbIvPmSvq4oJp9-a6_o2xv5-Nfa012qpw-ZkftjuuxNoQP62PxA1CIBdOs4RClAgzQ/" /></span></p><p style="TEXT-INDENT: -18pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 36pt; MARGIN-RIGHT: 0cm; mso-margin-top-alt: 0cm; mso-list: l117 level1 lfo4" class="WordSection1"><span style="font-family:verdana;"><span lang="EN-US"><span style="mso-list: Ignore">3.<span style="FONT: 100% 'Times New Roman'"> </span></span></span><span lang="EN-US">The resultant join will have some invalid rows, due to merge columns in the Excel. Therefore, I’ve used the Conditional Split task (Get valid data) to exclude the unwanted columns.<o:p></o:p></span></span></p><p style="TEXT-INDENT: -18pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 36pt; MARGIN-RIGHT: 0cm; mso-margin-top-alt: 0cm; mso-list: l117 level1 lfo4" class="WordSection1"><span style="font-family:verdana;"><span lang="EN-US"><span style="mso-list: Ignore">4.<span style="FONT: 100% 'Times New Roman'"> </span></span></span><span lang="EN-US">The rest are simple stuff of adding the derived Date column, calculations of {In}-{Out} and data conversion, before loading into Production table.</span></span></p><p style="TEXT-INDENT: -18pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 36pt; MARGIN-RIGHT: 0cm; mso-margin-top-alt: 0cm; mso-list: l117 level1 lfo4" class="WordSection1"><span style="font-family:verdana;"></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"><strong><u>Part B: SQL PIVOT</u></strong></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US"><span style="font-family:verdana;">Next is the PIVOT SQL command (following the sample in </span><a href="http://msdn.microsoft.com/en-us/library/ms177410.aspx"><span style="font-family:verdana;">MSDN</span></a><span style="font-family:verdana;">)</span></span></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"></p><p style="MARGIN: 0cm 0cm 0pt" class="WordSection1"><span lang="EN-US" style="font-family:verdana;"><o:p></o:p></span></p><div class="WordSection1"><table style="BORDER-COLLAPSE: collapse" class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 283.1pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0cm" valign="top" width="377"><p class="MsoNormal"><span style="font-family:verdana;">SELECT Date, [Category 1], [Category 2], [Category 3] FROM<span style="color:#1f497d;"><o:p></o:p></span></span></p><p class="MsoNormal"><span style="font-family:verdana;color:#1f497d;">(</span><span style="color:black;"><o:p></o:p></span></p><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="color:black;"><span style="font-family:verdana;">SELECT Date, Category, Balance <o:p></o:p></span></span></p><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="color:black;"><span style="font-family:verdana;">FROM Table01<o:p></o:p></span></span></p><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="color:black;"><span style="font-family:verdana;">WHERE ProductName = ‘Product A’<o:p></o:p></span></span></p><p style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="color:black;"><span style="font-family:verdana;">AND Date = ‘20100115’<o:p></o:p></span></span></p><p class="MsoNormal"><span style="color:black;"><span style="font-family:verdana;">) AS SourceTable<o:p></o:p></span></span></p><p class="MsoNormal"><span style="color:black;"><span style="font-family:verdana;">PIVOT <o:p></o:p></span></span></p><p class="MsoNormal"><span style="color:black;"><span style="font-family:verdana;">(<o:p></o:p></span></span></p><p class="MsoNormal"><span style="color:black;"><span style="font-family:verdana;">AVG(Balance)<o:p></o:p></span></span></p><p class="MsoNormal"><span style="color:black;"><span style="font-family:verdana;">FOR Category<o:p></o:p></span></span></p><p class="MsoNormal"><span style="color:black;"><span style="font-family:verdana;">IN ([Category 1], [Category 2], [Category 3])<o:p></o:p></span></span></p><p class="MsoNormal"><span style="color:black;"><span style="font-family:verdana;">) AS PivotTable;<o:p></o:p></span></span></p><p class="MsoNormal"><span style="font-family:verdana;color:#1f497d;"><o:p></o:p></span></p><p class="MsoNormal"><span style="font-family:verdana;color:#1f497d;"><o:p></o:p></span></p></td></tr></tbody></table></div><p class="WordSection1"><span style="font-family:verdana;"><span lang="EN-US">So it’s done. Probably not the best apparoch, but hey, it works <span style="color:black;">anyway </span></span><span lang="EN-US" style="color:black;">J</span><span lang="EN-US" style="color:black;">.</span><span lang="EN-US"><o:p></o:p></span></span></p>Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com0tag:blogger.com,1999:blog-2101409208299689776.post-89084907580774332262010-01-15T17:26:00.002+08:002010-01-15T18:51:01.232+08:00Setting up SharePoint 2010 development environment on my Windows 7 laptop<div class="WordSection1"><p class="MsoNormal">SharePoint 2010 is now well into the Beta 2 phase. As a consultant and developer for SharePoint solutions, it’s time for me to dive in! To do that well, I need to have a development environment to play around on top of reading blogs and PDC materials.</p><p class="MsoNormal">Given the choice, I would love to setup the a virtual box on my work laptop, but the hardware specs of 4GB and 2.0GHz seems to be at the border line of usable performance. Besides, I don’t want to reinstall my newly imaged Windows 7 workstation laptop to Windows 2008 R2 for Hyper-V. I’m not gonna buy VMWare either. I also tried Sun’s VirtualBox which support x64 guest OS, but it’s really really slow…</p><p class="MsoNormal">That leaves me no choice but to install it on the host machine itself, since SharePoint 2010 now support installation on Windows 7 and Vista, or, more or less. I says so because it’s not so straight forward as installing it on Windows Server 2008. However, it’s much more easier than doing the same for SharePoint 2007.</p><p class="MsoNormal">Being a late starter, plenty of resources already available on the Internet. Many people hit into some problems getting it to work on Windows 7. Some straight forward, some not. Here’s the steps I’ve taken to complete the installation until Site Collection creation is working:</p><ol><li><div class="MsoNormal">Followed the steps in <a href="http://msdn.microsoft.com/en-us/library/ee554869(office.14).aspx">Setting Up the Development Environment for SharePoint Server</a>. (Why can’t it be easier?)</div></li><li><div class="MsoNormal">As pointed out in the <a href="http://blogs.msdn.com/sharepoint/archive/2009/11/19/installation-notice-for-the-sharepoint-server-public-beta-on-microsoft-windows-server-2008-r2-and-microsoft-windows-7.aspx?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+sharepointteamblog+%28Microsoft+SharePoint+Products+and+Technologies+Team+Blog%29">SharePoint Team Blog</a>, applied the Hotfix <a href="http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=23806">KB976462</a>.</div></li><li><div class="MsoNormal">Had a UserProfile Exception, due to TimoutException. This <a href="http://praveenbattula.blogspot.com/2009/11/microsoftofficeserveruserprofilesuserpr_18.html">blog</a> helped me out, which is to delete some cached ASP.NET files in <b>C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\d31735f8a1b34f3a8263707181c7e298\5902e8c4\679035c5</b>\.</div></li><li><div class="MsoNormal">Some other errors that I also encountered during the configuration wizard process are:<?xml:namespace prefix = o /><o:p></o:p></div></li></ol><p style="TEXT-INDENT: -18pt; MARGIN-LEFT: 72pt; mso-list: l87 level2 lfo2" class="MsoListParagraph"><span style="mso-list: Ignore">a.<span style="FONT: 7pt 'Times New Roman'"> </span></span>Exception: Microsoft.SharePoint.SPException: User cannot be found.<o:p></o:p></p><p style="TEXT-INDENT: -18pt; MARGIN-LEFT: 72pt; mso-list: l87 level2 lfo2" class="MsoListParagraph"><span style="mso-list: Ignore">b.<span style="FONT: 7pt 'Times New Roman'"> </span></span>Unable to create a Service Connection Point in the current Active Directory domain. Verify that the SharePoint container exists in the current domain and that you have rights to write to it.<o:p></o:p></p><p class="MsoNormal">These errors were probably resolved by applying the patch in #2 or the steps in #3. <o:p></o:p></p><p class="MsoNormal">So now I got a working test bed to try out those exciting features that I’ve read for months!<o:p></o:p></p></div>Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com0tag:blogger.com,1999:blog-2101409208299689776.post-44624182926827253762009-06-18T19:35:00.001+08:002009-06-18T19:35:47.333+08:00SharePoint 2007 SP2 Resources<div class=Section1> <p class=MsoNormal>I might be involve in a SP2 deployment. Guess I better get myself ready for it. Following are stuff that I need to crunch through first:<o:p></o:p></p> <p class=MsoNormal><b><o:p> </o:p></b></p> <p class=MsoNormal><b>Announcement of MOSS 2007 SP2 and WSSv3 SP2<o:p></o:p></b></p> <p class=MsoNormal><a href="http://blogs.msdn.com/sharepoint/archive/2009/04/28/announcing-service-pack-2-for-office-sharepoint-server-2007-and-windows-sharepoint-services-3-0.aspx">http://blogs.msdn.com/sharepoint/archive/2009/04/28/announcing-service-pack-2-for-office-sharepoint-server-2007-and-windows-sharepoint-services-3-0.aspx</a><o:p></o:p></p> <p class=MsoNormal><o:p> </o:p></p> <p class=MsoNormal><b>Immediate Issue after deploying SP2<o:p></o:p></b></p> <p class=MsoNormal><a href="http://blogs.msdn.com/sharepoint/archive/2009/05/21/attention-important-information-on-service-pack-2.aspx">http://blogs.msdn.com/sharepoint/archive/2009/05/21/attention-important-information-on-service-pack-2.aspx</a><o:p></o:p></p> <p class=MsoNormal>Step to re-enter license key - <a href="http://support.microsoft.com/kb/971620">http://support.microsoft.com/kb/971620</a><o:p></o:p></p> <p class=MsoNormal><o:p> </o:p></p> <p class=MsoNormal><b>April Cumulative Update (CU) (with timeline diagram of update schedule)<o:p></o:p></b></p> <p class=MsoNormal><a href="http://blogs.msdn.com/sharepoint/archive/2009/05/13/april-cumulative-update-packages-ready-for-download.aspx">http://blogs.msdn.com/sharepoint/archive/2009/05/13/april-cumulative-update-packages-ready-for-download.aspx</a><o:p></o:p></p> <p class=MsoNormal><o:p> </o:p></p> <p class=MsoNormal><b>Updates Resource Center @ SharePoint Server TechCenter<o:p></o:p></b></p> <p class=MsoNormal><a href="http://technet.microsoft.com/en-us/office/sharepointserver/bb735839.aspx">http://technet.microsoft.com/en-us/office/sharepointserver/bb735839.aspx</a><o:p></o:p></p> <p class=MsoNormal><o:p> </o:p></p> <p class=MsoNormal><b>Deploy software updates for Office SharePoint Server 2007<o:p></o:p></b></p> <p class=MsoNormal><a href="http://technet.microsoft.com/en-us/library/cc263467.aspx">http://technet.microsoft.com/en-us/library/cc263467.aspx</a><o:p></o:p></p> <p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p> <p class=MsoNormal><b>How the upgrade process works<o:p></o:p></b></p> <p class=MsoNormal>These article explains In-place and Gradual upgrade approches<o:p></o:p></p> <p class=MsoNormal>WSSv3 - <a href="http://technet.microsoft.com/en-us/library/cc288775.aspx">http://technet.microsoft.com/en-us/library/cc288775.aspx</a><br> MOSS 2007 - <a href="http://technet.microsoft.com/en-us/library/cc262483.aspx">http://technet.microsoft.com/en-us/library/cc262483.aspx</a><o:p></o:p></p> </div> Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com1tag:blogger.com,1999:blog-2101409208299689776.post-79581920486394714082009-06-18T18:00:00.001+08:002009-06-18T18:01:46.615+08:00Running VPCs with different date/time<div class=Section1> <p class=MsoNormal>I have plenty of VPC images that were built on trial version for testing and demo purpose. So when these images lives longer than it’s trial period, you’ll need to trick it by changing the host machine’s time. That’s no good since it’ll affect your applications on the host machine.<o:p></o:p></p> <p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p> <p class=MsoNormal>There’s a quick method to either disable the time synchronization between the VPC and the host machine, or hardcode a specific date/time for the VPC. Both can be done via modification on the vmc file.<o:p></o:p></p> <p class=MsoListParagraph><span style='font-size:10.0pt;font-family:"Arial","sans-serif"; color:#333333'><br> <span class=apple-style-span>1.</span><span class=apple-converted-space><b> Disable the time synchronization:</b></span><span class=apple-style-span><o:p></o:p></span></span></p> <p class=MsoListParagraph><span class=apple-style-span><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333'><o:p> </o:p></span></b></span></p> <p class=MsoListParagraph><span class=apple-style-span><span style='font-size: 10.0pt;font-family:"Arial","sans-serif";color:#333333'>Under the following mouse configuration:</span></span><span style='font-size:10.0pt;font-family: "Arial","sans-serif";color:#333333'><br> <span class=apple-style-span><mouse></span><br> <span class=apple-style-span><allow type="boolean">true</allow></span><br> <span class=apple-style-span></mouse></span><br> <br> <span class=apple-style-span>Add this:</span><br> <span class=apple-style-span><components></span><br> <span class=apple-style-span><host_time_sync></span><br> <span class=apple-style-span><enabled type="boolean">false</enabled></span><br> <span class=apple-style-span></host_time_sync></span><br> <span class=apple-style-span></components></span><br> <br> <br> </span><span class=apple-style-span><span style='font-size:10.0pt;font-family: "Arial","sans-serif";color:#1F497D'>2</span></span><span class=apple-style-span><span style='font-size:10.0pt;font-family:"Arial","sans-serif"; color:#333333'>.</span></span><span class=apple-converted-space><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333'> </span></span><span class=apple-style-span><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif"; color:#333333'>Set the desired date/time:</span></b></span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333'><br> <br> <span class=apple-style-span>You have to find the time_bytes value inside the .vmc file, which looks like this one:</span><br> <br> <span class=apple-style-span><time_bytes type="bytes">27003200110001201008</time_bytes></span><br> <br> <span class=apple-style-span>After finding it, set the desired date/time value according to the following specification:</span><br> <span class=apple-style-span>Digits 1 - 2 contain the seconds value.</span><br> <span class=apple-style-span>Digits 5 - 6 contain the minutes value.</span><br> <span class=apple-style-span>Digits 9 - 10 contain the hours value.</span><br> <span class=apple-style-span>Digits 15 - 16 contain the day value.</span><br> <span class=apple-style-span>Digits 17 - 18 contain the month value.</span><br> <span class=apple-style-span>Digits 19 - 20 contain the year value.</span><br> <br> <span class=apple-style-span>In the above example, the date/time value is 11:32:27, 20/10/2008</span><br> <br> <span class=apple-style-span>After making the above 2 changes, save the .vmc file, and the guest operating system will start in the same date/time that you set in the time_bytes value.<o:p></o:p></span></span></p> <p class=MsoNormal><o:p> </o:p></p> <p class=MsoNormal><b>Reference</b>: <a href="http://www.nirsoft.net/blog/2008_12_01_archive.html">http://www.nirsoft.net/blog/2008_12_01_archive.html</a><o:p></o:p></p> </div> Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com0tag:blogger.com,1999:blog-2101409208299689776.post-65847832149528642132009-06-18T17:46:00.002+08:002009-06-18T18:02:17.789+08:00Unable to browse sharepoint from within the server itself<div class="Section1"> <p style="margin:0cm;margin-bottom:.0001pt"><span lang="EN-US" style="Calibri","sans-serif"font-family:";font-size:11.0pt;">If you ever have problem browsing your SharePoint portal from within the WFEs itself, and running on Windows Server 2003 SP1 or above, it could be due to a loopback check security. I noticed that this does not happen to site that does not use host header (e.g. does not happen to <a href="http://servername:port/">http://servername:port</a>, but happen to <a href="http://host.header.name.com/">http://host.header.name.com/</a>).</span></p> <p style="margin:0cm;margin-bottom:.0001pt"><span lang="EN-US" style="Calibri","sans-serif"font-family:";font-size:11.0pt;">
Take a look at <a href="http://support.microsoft.com/kb/896861">http://support.microsoft.com/kb/896861</a>. By modifying some registry, you can either exclude your specific URL from this security check, or disable the feature. The following is a direct copy from the KB article for reference.<o:p></o:p></span></p> <h3 style="mso-margin-top-alt:11.25pt;margin-right:0cm;margin-bottom:3.75pt; margin-left:0cm;line-height:12.0pt"><span style="Verdana","sans-serif";font-family:";font-size:10.0pt;color:black;">Method 1: Specify host names<o:p></o:p></span></h3> <p class="MsoNormal" style="line-height:12.0pt"><span class="apple-style-span"><b><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;">Note</span></b></span><span class="apple-converted-space"><span style="Verdana","sans-serif"; font-family:";font-size:8.5pt;color:black;"> </span></span><span class="apple-style-span"><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;">We recommend that you use this method.</span></span><span style=" Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;">
<span class="apple-style-span">To specify the host names that are mapped to the loopback address and can connect to Web sites on your computer, follow these steps:</span></span><span class="apple-style-span"><span style="font-size:8.5pt;"><o:p></o:p></span></span></p> <ol start="1" type="1"> <li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:12.0pt;mso-list:l1 level1 lfo1;-webkit-box-sizing: border-box"><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;">Click<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">Start</span></strong>, click<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">Run</span></strong>, type<span class="apple-converted-space"> </span><span class="userinput"><b>regedit</b></span>, and then click<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">OK</span></strong>.</span><o:p></o:p></li> <li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt: auto;line-height:12.0pt;mso-list:l1 level1 lfo1;-webkit-box-sizing: border-boxcolor:black;"><span style="Verdana","sans-serif"font-family:";font-size:8.5pt;">In Registry Editor, locate and then click the following registry key:<o:p></o:p></span></li> </ol> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;line-height:12.0pt"><strong><span style=" Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;">HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0</span></strong><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;"><o:p></o:p></span></p> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt;line-height:12.0pt;mso-list:l1 level1 lfo1"><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;"><span style="mso-list:Ignore">3.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="Verdana","sans-serif"; font-family:";font-size:8.5pt;color:black;">Right-click<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">MSV1_0</span></strong>, point to<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">New</span></strong>, and then click<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">Multi-String Value</span></strong>.<o:p></o:p></span></p> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt;line-height:12.0pt;mso-list:l1 level1 lfo1"><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;"><span style="mso-list:Ignore">4.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="Verdana","sans-serif"; font-family:";font-size:8.5pt;color:black;">Type<span class="apple-converted-space"> </span><span class="userinput"><b>BackConnectionHostNames</b></span>, and then press ENTER.<o:p></o:p></span></p> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt;line-height:12.0pt;mso-list:l1 level1 lfo1"><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;"><span style="mso-list:Ignore">5.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="Verdana","sans-serif"; font-family:";font-size:8.5pt;color:black;">Right-click<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">BackConnectionHostNames</span></strong>, and then click<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">Modify</span></strong>.<o:p></o:p></span></p> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt;line-height:12.0pt;mso-list:l1 level1 lfo1"><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;"><span style="mso-list:Ignore">6.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="Verdana","sans-serif"; font-family:";font-size:8.5pt;color:black;">In the<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">Value data</span></strong><span class="apple-converted-space"> </span>box, type the host name or the host names for the sites that are on the local computer, and then click<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">OK</span></strong>.<o:p></o:p></span></p> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt;line-height:12.0pt;mso-list:l1 level1 lfo1"><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;"><span style="mso-list:Ignore">7.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="Verdana","sans-serif"; font-family:";font-size:8.5pt;color:black;">Quit Registry Editor, and then restart the IISAdmin service.<o:p></o:p></span></p> <h3 style="mso-margin-top-alt:11.25pt;margin-right:0cm;margin-bottom:3.75pt; margin-left:0cm;line-height:12.0pt"><span style="Verdana","sans-serif";font-family:";font-size:10.0pt;color:black;">Method 2: Disable the loopback check<o:p></o:p></span></h3> <p class="MsoNormal" style="line-height:12.0pt"><span class="apple-style-span"><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;">Follow these steps:</span></span><span class="apple-style-span"><span style="font-size:8.5pt;"><o:p></o:p></span></span></p> <ol start="1" type="1"> <li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:12.0pt;mso-list:l0 level1 lfo2;-webkit-box-sizing: border-box"><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;">Click<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">Start</span></strong>, click<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">Run</span></strong>, type<span class="apple-converted-space"> </span><span class="userinput"><b>regedit</b></span>, and then click<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">OK</span></strong>.</span><o:p></o:p></li> <li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt: auto;line-height:12.0pt;mso-list:l0 level1 lfo2;-webkit-box-sizing: border-boxcolor:black;"><span style="Verdana","sans-serif"font-family:";font-size:8.5pt;">In Registry Editor, locate and then click the following registry key:<o:p></o:p></span></li> </ol> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;line-height:12.0pt"><strong><span style=" Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;">HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa</span></strong><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;"><o:p></o:p></span></p> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt;line-height:12.0pt;mso-list:l0 level1 lfo2"><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;"><span style="mso-list:Ignore">3.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="Verdana","sans-serif"; font-family:";font-size:8.5pt;color:black;">Right-click<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">Lsa</span></strong>, point to<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">New</span></strong>, and then click<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">DWORD Value</span></strong>.<o:p></o:p></span></p> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt;line-height:12.0pt;mso-list:l0 level1 lfo2"><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;"><span style="mso-list:Ignore">4.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="Verdana","sans-serif"; font-family:";font-size:8.5pt;color:black;">Type<span class="apple-converted-space"> </span><span class="userinput"><b>DisableLoopbackCheck</b></span>, and then press ENTER.<o:p></o:p></span></p> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt;line-height:12.0pt;mso-list:l0 level1 lfo2"><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;"><span style="mso-list:Ignore">5.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="Verdana","sans-serif"; font-family:";font-size:8.5pt;color:black;">Right-click<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">DisableLoopbackCheck</span></strong>, and then click<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">Modify</span></strong>.<o:p></o:p></span></p> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt;line-height:12.0pt;mso-list:l0 level1 lfo2"><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;"><span style="mso-list:Ignore">6.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="Verdana","sans-serif"; font-family:";font-size:8.5pt;color:black;">In the<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">Value data</span></strong><span class="apple-converted-space"> </span>box, type<span class="apple-converted-space"> </span><span class="userinput"><b>1</b></span>, and then click<span class="apple-converted-space"> </span><strong><span style="Verdana","sans-serif"font-family:";">OK</span></strong>.<o:p></o:p></span></p> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt;line-height:12.0pt;mso-list:l0 level1 lfo2"><span style="Verdana","sans-serif";font-family:";font-size:8.5pt;color:black;"><span style="mso-list:Ignore">7.<span style="font:7.0pt "Times New Roman""> </span></span></span><span style="Verdana","sans-serif"; font-family:";font-size:8.5pt;color:black;">Quit Registry Editor, and then restart your computer.</span></p> </div>Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com0tag:blogger.com,1999:blog-2101409208299689776.post-28470681926414248002009-06-18T17:19:00.002+08:002009-06-18T18:02:49.970+08:00Resources on Configuring SharePoint Form Authentication<div class=Section1> <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US style='font-size: 11.0pt;font-family:"Calibri","sans-serif"'>Here’s some of the best resource for setting up form based authentication.<o:p></o:p></span></p> <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US style='font-size: 11.0pt;font-family:"Calibri","sans-serif"'><o:p> </o:p></span></p> <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US style='font-size: 11.0pt;font-family:"Calibri","sans-serif"'>From the SharePoint Team Blog (Configuring Multiple Authentication Providers for SharePoint 2007):<o:p></o:p></span></p> <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US style='font-size: 11.0pt;font-family:"Calibri","sans-serif"'><a href="http://blogs.msdn.com/sharepoint/archive/2006/08/16/702010.aspx">http://blogs.msdn.com/sharepoint/archive/2006/08/16/702010.aspx</a><o:p></o:p></span></p> <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US style='font-size: 11.0pt;font-family:"Calibri","sans-serif"'><o:p> </o:p></span></p> <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US style='font-size: 11.0pt;font-family:"Calibri","sans-serif"'>From the TechNet (Configure forms-based authentication for WSSv3):<o:p></o:p></span></p> <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US style='font-size: 11.0pt;font-family:"Calibri","sans-serif"'><a href="http://technet.microsoft.com/en-us/library/cc288043.aspx">http://technet.microsoft.com/en-us/library/cc288043.aspx</a><o:p></o:p></span></p> <p class=MsoNormal><o:p> </o:p></p> <p class=MsoNormal>From Andrew Connell’s blog (very detailed step by step):<o:p></o:p></p> <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US style='font-size: 11.0pt;font-family:"Calibri","sans-serif"'><a href="http://www.andrewconnell.com/blog/articles/HowToConfigPublishingSiteWithDualAuthProvidersAndAnonAccess.aspx">http://www.andrewconnell.com/blog/articles/HowToConfigPublishingSiteWithDualAuthProvidersAndAnonAccess.aspx</a><o:p></o:p></span></p> </div>Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com0tag:blogger.com,1999:blog-2101409208299689776.post-8151191366939935612009-02-13T10:58:00.011+08:002009-02-13T11:17:02.848+08:00Cause of Audience Targeting Error LogThe following error was logged on the MOSS WFE servers intermittently without any pattern in the sense of frequency. It happens once in a blue moon.
<br /><br />
<table width="100%" border="1">
<tbody><tr>
<td>
Event Type: Error
Event Source: Office SharePoint Server
Event Category: Office Server General
Event ID: 7888
Date: 2/11/2009
Time: 5:56:21 PM
User: N/A
Computer: MOSSPROD01
Description:
A runtime exception was detected. Details follow.
Message: Thread was being aborted.
Techinal Details:
System.Threading.ThreadAbortException: Thread was being aborted.
at Microsoft.Office.Server.WebControls.AudienceLoader.UpdateAudienceRunTimeCheckHashs(Boolean loadAudiences, Boolean loadMemberships, Boolean loadSharePointGroups)
at Microsoft.Office.Server.WebControls.AudienceLoader.EnsureCurrentUserAudienceIDs(Boolean loadAudiences, Boolean loadMemberships, Boolean loadSharePointGroups)
at Microsoft.Office.Server.Audience.AudienceManager.IsCurrentUserInAudienceOf(AudienceLoader audienceLoader, String audienceTextRepresentation, Boolean showUntargetedAudience)
</td>
</tr>
</tbody></table>
<br /><br />
There were other logs with similar detail, all has something to do with Audience methods throwing errors. A check on the SharePoint log files provided a little bit of clue, but nothing that lights the bulb. Here's the snippet of the error logged under the category of User Profiles in MOSS log:
<br /><br />
<table width="100%" border="1">
<tbody><tr>
<td>
GetUserAudienceIDs::GetUserAudienceIDs() failed in SharePoint Group membership resolution (Exception Message : Accessor is invalid. StackTrace
at Microsoft.SharePoint.Utilities.SPUtility.HandleAccessDenied(Exception ex)
at Microsoft.SharePoint.SPGlobal.HandleUnauthorizedAccessException(UnauthorizedAccessException ex)
at Microsoft.SharePoint.Library.SPRequest.GetGroupsDataAsSafeArray(String bstrUrl, UInt32 dwGroupsScope, String bstrValue, UInt32 dwValue, UInt32& pdwColCount, UInt32& pdwRowCount, Object& pvarDataSet)
at Microsoft.SharePoint.SPGroupCollection.InitGroups(Boolean fCustomUsers, String[] strNames, Int32[] groupIds)
at Microsoft.SharePoint.SPGroupCollection.InitGroups()
at Microsoft.SharePoint.SPGroupCollection.Undirty()
at Microsoft.SharePoint.SPBaseCollection.System.Collections.IEnumerable.GetEnumerator()
at Microsoft.Office.Server.Audience.AudienceManager.GetUserAudienceIDs(String accountName, SPWeb web, Boolean loadAudiences, Boolean loadSharePointGroups, Boolean loadMemberships).
No SharePoint Group IDs will be returned.
</td>
</tr>
</tbody></table>
<br /><br />
Then I moved on to the IIS log files, and found that at the time of the error, a user is accessing the homepage. Immediately after that homepage request, several lines of log shows the user was being redirected to the /layouts/AccessDenied.aspx page. This pattern can be seen in several other occasions as well in other copy of the IIS log files.
<br /><br />
<table width="100%" border="1">
<tbody><tr>
<td>
2008-12-17 07:36:24 W3SVC45547621 172.25.67.84 GET /default.aspx - 443 PROD-AD01\uTester01 58.213.113.254 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727) 302 0 0
2008-12-17 07:36:27 W3SVC45547621 172.25.67.84 GET /_layouts/AccessDenied.aspx Source=https%3A%2F%2Fportal%2Eportal%2Ecom%2Fdefault%2Easpx 443 PROD-AD01\uTester01 58.213.113.254 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727) 200 0 0
</td>
</tr>
</tbody></table>
<br /><br />
After further investigation and testing, I found that the homepage is the only page that the portal has audience targeting configured. Several testing and monitoring was conducted and the conclusion is that this error will always be thrown whenever an unauthorized user attempts to load a MOSS page that has audience targeting configured. Since the error was thrown when the method IsCurrentUserInAudienceOf is invoked, this indicates that somehow MOSS will still perform audience checking even though the user doesn't have the privilege to access the portal.
<br /><br />
I have not found any workaround to remove the error. If you found any without suppressing the logs from central admin do let me know :).<br /><br />Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com1tag:blogger.com,1999:blog-2101409208299689776.post-38797476925174156842009-02-06T10:49:00.004+08:002009-02-06T11:07:35.110+08:00Performance Counters to trace for troubleshooting performance issueI've been involve in some performance testing for a typical MOSS implementation lately. Although I have done these test many times on different projects, but I find that each performance test is unique, depending on the test objective, environment, the test subject (portal pages and components).
Still, one thing that remain quite consistent is the performance counter to monitor. The following performance counter were used for the most recent performance test. I've included additional ASP.NET Application cache counters, as I want to verify whether the MOSS cache profile is working properly.
<!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:trackmoves/> <w:trackformatting/> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:donotpromoteqf/> <w:lidthemeother>EN-MY</w:LidThemeOther> <w:lidthemeasian>X-NONE</w:LidThemeAsian> <w:lidthemecomplexscript>X-NONE</w:LidThemeComplexScript> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> <w:splitpgbreakandparamark/> <w:dontvertaligncellwithsp/> <w:dontbreakconstrainedforcedtables/> <w:dontvertalignintxbx/> <w:word11kerningpairs/> <w:cachedcolbalance/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathpr> <m:mathfont val="Cambria Math"> <m:brkbin val="before"> <m:brkbinsub val="--"> <m:smallfrac val="off"> <m:dispdef/> <m:lmargin val="0"> <m:rmargin val="0"> <m:defjc val="centerGroup"> <m:wrapindent val="1440"> <m:intlim val="subSup"> <m:narylim val="undOvr"> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"> <w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"> <w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"> <w:lsdexception locked="false" priority="39" name="toc 1"> <w:lsdexception locked="false" priority="39" name="toc 2"> <w:lsdexception locked="false" priority="39" name="toc 3"> <w:lsdexception locked="false" priority="39" name="toc 4"> <w:lsdexception locked="false" priority="39" name="toc 5"> <w:lsdexception locked="false" priority="39" name="toc 6"> <w:lsdexception locked="false" priority="39" name="toc 7"> <w:lsdexception locked="false" priority="39" name="toc 8"> <w:lsdexception locked="false" priority="39" name="toc 9"> <w:lsdexception locked="false" priority="35" qformat="true" name="caption"> <w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"> <w:lsdexception locked="false" priority="1" name="Default Paragraph Font"> <w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"> <w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"> <w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"> <w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"> <w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"> <w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"> <w:lsdexception locked="false" unhidewhenused="false" name="Revision"> <w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"> <w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"> <w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"> <w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"> <w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"> <w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"> <w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"> <w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"> <w:lsdexception locked="false" priority="37" name="Bibliography"> <w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-fareast-language:EN-US;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-fareast-language:EN-US;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:10.0pt; line-height:115%;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 72.0pt 72.0pt 72.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} </style> <![endif]--> <table class="MsoNormalTable" style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0"> <tbody><tr style=""> <td style="border: 1pt solid rgb(163, 163, 163); padding: 4pt; background: rgb(219, 229, 241) none repeat scroll 0% 0%; width: 77.25pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" valign="top" width="103"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><b><span style="" lang="EN-US">Counter Object<o:p></o:p></span></b></p> </td> <td style="border-style: solid solid solid none; border-color: rgb(163, 163, 163) rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 4pt; background: rgb(219, 229, 241) none repeat scroll 0% 0%; width: 134.3pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" valign="top" width="179"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><b><span style="" lang="EN-US">Counter<o:p></o:p></span></b></p> </td> <td style="border-style: solid solid solid none; border-color: rgb(163, 163, 163) rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 4pt; background: rgb(219, 229, 241) none repeat scroll 0% 0%; width: 48pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><b><span style="" lang="EN-US">WFE<o:p></o:p></span></b></p> </td> <td style="border-style: solid solid solid none; border-color: rgb(163, 163, 163) rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 4pt; background: rgb(219, 229, 241) none repeat scroll 0% 0%; width: 48pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><b><span style="" lang="EN-US">Index<o:p></o:p></span></b></p> </td> <td style="border-style: solid solid solid none; border-color: rgb(163, 163, 163) rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 4pt; background: rgb(219, 229, 241) none repeat scroll 0% 0%; width: 48pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><b><span style="" lang="EN-US">SQL<o:p></o:p></span></b></p> </td> <td style="border-style: solid solid solid none; border-color: rgb(163, 163, 163) rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 4pt; background: rgb(219, 229, 241) none repeat scroll 0% 0%; width: 48pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><b><span style="" lang="EN-US">Client<o:p></o:p></span></b></p> </td> <td style="border-style: solid solid solid none; border-color: rgb(163, 163, 163) rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 4pt; background: rgb(219, 229, 241) none repeat scroll 0% 0%; width: 157.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" valign="top" width="210"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><b><span style="" lang="EN-US">Remark<o:p></o:p></span></b></p> </td> </tr> <tr style=""> <td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163); border-width: medium 1pt 1pt; padding: 4pt; width: 77.25pt;" valign="top" width="103"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Processor<span style=""> </span>(_Total)<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 134.3pt;" valign="top" width="179"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">% Processor Time<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Y<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Y<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Y<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Y<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 157.4pt;" valign="top" width="210"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Not more than 70%<o:p></o:p></span></p> </td> </tr> <tr style=""> <td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163); border-width: medium 1pt 1pt; padding: 4pt; width: 77.25pt;" valign="top" width="103"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Memory<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 134.3pt;" valign="top" width="179"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Available Bytes<o:p></o:p></span></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Pages/Sec<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Y<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Y<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Y<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Y<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 157.4pt;" valign="top" width="210"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US"> <o:p></o:p></span></p>
</td> </tr> <tr style=""> <td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163); border-width: medium 1pt 1pt; padding: 4pt; width: 77.25pt;" valign="top" width="103"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Physical Disk<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 134.3pt;" valign="top" width="179"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">% Disk Time<o:p></o:p></span></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Avg. Disk Queue Length<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Y<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US"> <o:p></o:p></span></p>
</td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Y<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US"> <o:p></o:p></span></p>
</td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 157.4pt;" valign="top" width="210"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US"> <o:p></o:p></span></p>
</td> </tr> <tr style=""> <td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163); border-width: medium 1pt 1pt; padding: 4pt; width: 77.25pt;" valign="top" width="103"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Network<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 134.3pt;" valign="top" width="179"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Bytes Sent/Sec<o:p></o:p></span></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Bytes Received/Sec<o:p></o:p></span></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Bytes Total/Sec<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Y<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Y<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Y<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Y<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 157.4pt;" valign="top" width="210"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US"><a href="http://technet.microsoft.com/en-us/library/aa996224.aspx"><span style="color:blue;">http://technet.microsoft.com/en-us/library/aa996224.aspx</span></a><o:p></o:p></span></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US"> <o:p></o:p></span></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><b><span style="" lang="EN-US">Bytes Total/Sec</span></b><span style="" lang="EN-US"> for 1000mbps NIC should not go over 70MB/s<o:p></o:p></span></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US"> <o:p></o:p></span></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><b><span style="" lang="EN-US">Bytes Total/Sec</span></b><span style="" lang="EN-US"> for 100mbps NIC should not go over 7MB/s<o:p></o:p></span></p> </td> </tr> <tr style=""> <td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163); border-width: medium 1pt 1pt; padding: 4pt; width: 77.25pt;" valign="top" width="103"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">ASP.NET Applications<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 134.3pt;" valign="top" width="179"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><b><span style="" lang="EN-US">Request Total<o:p></o:p></span></b></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><b><span style="" lang="EN-US">Requests/sec<o:p></o:p></span></b></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Request Execution Time<o:p></o:p></span></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Requests Succeeded<o:p></o:p></span></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Request Rejected<o:p></o:p></span></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Requests Timed Out<o:p></o:p></span></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Requests Not Found<o:p></o:p></span></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Requests<span style=""> </span>Not Authorized<o:p></o:p></span></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><b><span style="" lang="EN-US">Output Cache Hits<o:p></o:p></span></b></p> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><b><span style="" lang="EN-US">Output Cache Misses<o:p></o:p></span></b></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Y<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US"> <o:p></o:p></span></p>
</td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US"> <o:p></o:p></span></p>
</td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 48pt;" valign="top" width="64"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US"> <o:p></o:p></span></p>
</td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 4pt; width: 157.4pt;" valign="top" width="210"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="" lang="EN-US">Refer to <a href="http://msdn.microsoft.com/en-us/library/fxk122b4.aspx"><span style="color:blue;">http://msdn.microsoft.com/en-us/library/fxk122b4.aspx</span></a> for description of ASP.NET performance counters.<o:p></o:p></span></p> </td> </tr> </tbody></table>
I will include the SQL server performance counters later, as I do not have the information now (it was determined by my SQL-expert colleague)Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com0tag:blogger.com,1999:blog-2101409208299689776.post-77781005768413003382008-12-23T22:55:00.002+08:002009-02-07T16:29:32.069+08:00Recommended SharePoint application pool settingsJoel Oleson has a great blog regarding the best practice when comes to application pool performance settings:<span style="text-decoration: underline;"> </span><a href="http://blogs.msdn.com/joelo/archive/2007/10/29/sharepoint-app-pool-settings.aspx">http://blogs.msdn.com/joelo/archive/2007/10/29/sharepoint-app-pool-settings.aspx</a>.
Do refer the comments left by other readers as well.Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com0tag:blogger.com,1999:blog-2101409208299689776.post-43627116468746173432008-09-09T18:16:00.001+08:002008-09-09T18:16:55.194+08:00Check SharePoint version<div class=Section1> <p class=MsoNormal>Great place to find out which version of SharePoint you’re running on. <a href="http://www.mindsharpblogs.com/penny/articles/481.aspx">http://www.mindsharpblogs.com/penny/articles/481.aspx</a>. Big thanks to Penny Coventry for keeping the information up to date.<o:p></o:p></p> </div> Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com1tag:blogger.com,1999:blog-2101409208299689776.post-44095350252725930592008-09-09T17:50:00.004+08:002009-03-25T14:22:49.535+08:00PDF iFilter Updates<div class="Section1"> <p class="MsoNormal">It’s been a while since I’ve last configure the PDF iFilter for SharePoint. The last one I’ve done was for SPS 2003. For MOSS 2007, the process is pretty much the same, except for file path difference and configuration page changes. Here’s the steps taken from MS KB <a href="http://support.microsoft.com/kb/832809/en-us">http://support.microsoft.com/kb/832809/en-us</a>.<o:p></o:p></p> <table class="MsoNormalTable" style="margin-left: 3.75pt; border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0"> <tbody><tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">1.<o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Download Adobe PDF IFilter 5.0 from the following Adobe Web site: <a href="http://www.adobe.com/support/downloads/detail.jsp?ftpID=2611">http://www.adobe.com/support/downloads/detail.jsp?ftpID=2611</a> (or search Google for latest installer from Adobe).<span style="display: none;">(http://www.adobe.com/support/downloads/detail.jsp?ftpID=1276)</span><o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">2.<o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Stop the IIS Admin service. To do this, follow these steps: <o:p></o:p></p> <table class="MsoNormalTable" style="margin-left: 3.75pt; border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0"> <tbody><tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">a. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Click <b>Start</b>, point to <b>Administrative Tools</b>, and then click <b>Services</b>.<o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">b. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Right-click <b>IIS Admin Service</b>, and then click <b>Stop</b>.<o:p></o:p></p> </td> </tr> </tbody></table> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">3.<o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Run the Adobe PDF IFilter 5.0 Setup program to install the filter on the server. <o:p></o:p></p> <table class="MsoNormalTable" style="margin-left: 3.75pt; border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0"> <tbody><tr> <td style="padding: 0in; width: 12pt;" valign="top" width="16"> <p class="MsoNormal">•<o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">For WSS 2.0, install the PDF iFilter on the SQL and WSS servers. <o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in; width: 12pt;" valign="top" width="16"> <p class="MsoNormal">•<o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">For SPS 2003, install the PDF iFilter on the SQL and Index servers. <o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in; width: 12pt;" valign="top" width="16"> <p class="MsoNormal">•<o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">For WSS 3.0, install the PDF iFilter on servers running the WSS [spsearch] search service. <o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in; width: 12pt;" valign="top" width="16"> <p class="MsoNormal">•<o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">For MOSS 2007, install the PDF iFilter on the Index servers. <o:p></o:p></p> </td> </tr> </tbody></table> <p class="MsoNormal">After installing the iFilter, perform Steps 5, 6, and 7 on all the Web Front End servers in the farm.<o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">4.<o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Register the Adobe PDF IFilter. To do this, follow these steps: <o:p></o:p></p> <table class="MsoNormalTable" style="margin-left: 3.75pt; border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0"> <tbody><tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">a. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Click <b>Start</b>, and then click <b>Run</b>.<o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">b. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">In the <b>Open</b> box, type <b>cmd</b>, and then click <b>OK</b>.<o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">c. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Switch to the folder that contains the Adobe PDF Filter 5.0 files. For example, switch to the following folder: <o:p></o:p></p> <p class="MsoNormal"><i>Drive</i>:\Program Files\Adobe\PDF IFilter 5.0<o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">d. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Type <b>regsvr32.exe pdffilt.dll</b>, and then press ENTER. <o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">e. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">If you receive a message that states that the operation was successful, click <b>OK</b> .<o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">f. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Type <b>exit</b>, and then press ENTER to exit the command prompt.<o:p></o:p></p> </td> </tr> </tbody></table> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">5.<o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Copy the .gif file that you want to use for the icon to the following folder on the server, as appropriate for your situation: <o:p></o:p></p> <p class="MsoNormal"><i>SharePoint Portal Server 2003 - Drive</i>:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\60\Template\Images<o:p></o:p></p> <p class="MsoNormal"><i>SharePoint Server 2007- Drive</i>:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\Template\Images<o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">6.<o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Edit the Docicon.xml file to include the .pdf extension. To do this, follow these steps: <o:p></o:p></p> <table class="MsoNormalTable" style="margin-left: 3.75pt; border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0"> <tbody><tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">a. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Start Notepad, and then open the Docicon.xml file. The Docicon.xml file is located in one of the following folders on the server: <o:p></o:p></p> <p class="MsoNormal"><i>SharePoint Portal Server 2003 - Drive</i>:\Program Files\Common Files\Microsoft Shared\Web server extensions\60\Template\Xml<o:p></o:p></p> <p class="MsoNormal"><i>SharePoint Server 2007- Drive</i>:\Program Files\Common Files\Microsoft Shared\Web server extensions\12\Template\Xml<o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">b. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Add an entry for the .pdf extension. For example, add a line that is similar to the following to the Docicon.xml file, where <i>NameofIconFile</i> is the name of the .gif file: <o:p></o:p></p> <p class="MsoNormal"><Mapping Key="pdf" Value="<i>NameofIconFile</i>.gif"/><o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">c. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">On the <b>File</b> menu, click <b>Save</b>, and then quit Notepad. <o:p></o:p></p> </td> </tr> </tbody></table> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">7.<o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Restart the server.<o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">8.<o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Add the .pdf file type to the content index. To do this, follow these steps: (these steps are for SPS2003. MOSS2007’s steps are to go to SSP configuration)<o:p></o:p></p> <table class="MsoNormalTable" style="margin-left: 3.75pt; border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0"> <tbody><tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">a. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Connect to the portal site, and then click <b>Site Settings</b>.<o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">b. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">On the <b>Site Settings</b> page, click <b>Configure search and indexing</b> under <b>Search Settings and Indexed Content</b>.<o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">c. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">On the <b>Configure Search and Indexing </b>page, click <b>Include file types</b> under <b>General Content Settings and Indexing Status</b>.<o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">d. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">On the <b>Specify File Types to Include</b> page, click <b>New File Type</b>.<o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">e. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">On the <b>Add File Type</b> page, type <b>pdf </b>in the <b>File extension</b> box, and then click <b>OK</b>.<o:p></o:p></p> </td> </tr> </tbody></table> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">9.<o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">Update the context indexes for portal content and for non-portal content. To do this, follow these steps: (these steps are for SPS2003. MOSS2007’s steps are to go to SSP configuration)<o:p></o:p></p> <table class="MsoNormalTable" style="margin-left: 3.75pt; border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0"> <tbody><tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">a. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">On the <b>Site Settings</b> page of the portal site, click <b>Configure search and indexing</b> under <b>Search Settings and Indexed Content</b>.<o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">b. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">On the <b>Configure search and indexing</b> page, click <b>Manage content indexes</b> under <b>Content Indexes</b>.<o:p></o:p></p> </td> </tr> <tr> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">c. <o:p></o:p></p> </td> <td style="padding: 0in;" valign="top"> <p class="MsoNormal">On the <b>Manage Content Indexes</b> page, click the down arrow next to the name of the index that you want to update, and then click <b>Start Full Update</b>.<o:p></o:p></p> </td> </tr> </tbody></table> </td> </tr> </tbody></table> <p class="MsoNormal"><o:p> </o:p></p> <p class="MsoNormal">For the image icon. Search for a pdf16.gif file using Google Image search, or download from Adobe at <a href="http://www.adobe.com/misc/linking.html#pdficon">here</a>.<o:p></o:p></p> <p class="MsoNormal"><o:p> </o:p></p> <p class="MsoNormal">References:<o:p></o:p></p> <p class="MsoNormal"><a href="http://weblogs.asp.net/jan/archive/2004/05/19/135273.aspx">http://weblogs.asp.net/jan/archive/2004/05/19/135273.aspx</a><o:p></o:p></p> <p class="MsoNormal"><a href="http://support.microsoft.com/kb/832809/en-us">http://support.microsoft.com/kb/832809/en-us</a><o:p></o:p></p> <p class="MsoNormal"><a href="http://www.ifiltershop.com/">http://www.ifiltershop.com/</a><o:p></o:p></p> <p class="MsoNormal"><a href="http://www.foxitsoftware.com/pdf/ifilter/">http://www.foxitsoftware.com/pdf/ifilter/</a></p><p class="MsoNormal">Default MOSS IFilters: <a href="http://technet.microsoft.com/en-us/library/cc261754.aspx">http://technet.microsoft.com/en-us/library/cc261754.aspx</a></p></div>Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com0tag:blogger.com,1999:blog-2101409208299689776.post-90740408139036026142008-08-19T11:38:00.001+08:002008-08-19T11:38:37.766+08:00SharePoint Audit Report does not include workflow events<div class=Section1> <p class=MsoNormal>Recently a colleague of mine wanted to generate the audit report for workflow in a SharePoint site collection. However, an error page was shown instead, stating <b><span style='color:red'>Report contains no data</span></b>. A quick check on the web shows that this is a known issue, and SharePoint does not provide workflow auditing report in this context. So why give this option in the first place? <o:p></o:p></p> <p class=MsoNormal>KB article: <a href="http://support.microsoft.com/kb/953133">http://support.microsoft.com/kb/953133</a><o:p></o:p></p> <p class=MsoNormal><o:p> </o:p></p> </div> Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com0tag:blogger.com,1999:blog-2101409208299689776.post-55169829193727218042008-08-13T10:49:00.001+08:002008-08-13T10:49:14.099+08:00Windows service and network port requirements list<div class=Section1> <p class=MsoNormal>This KB article from MS provides a list of ports used by services, which may come handy when troubleshooting network issues, or configuring firewalls. URL at <a href="http://support.microsoft.com/kb/832017">http://support.microsoft.com/kb/832017</a>.<o:p></o:p></p> </div> Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com0tag:blogger.com,1999:blog-2101409208299689776.post-29526352499360721302008-08-04T17:12:00.001+08:002008-08-04T17:12:01.628+08:00Invalid characters for MOSS 2007<div class=Section1> <p class=MsoNormal>Recently there was some strange issues surfacing, which my team in the project believe is due to some invalid characters being used in the filename of the content pages or document filenames. Some of the symptoms observed are:<o:p></o:p></p> <p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]>For WCM/ECM, the Page Editing Toolbar sometimes disappears.<o:p></o:p></p> <p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]>User unable to perform upload multiple files where there’s invalid character in the filename.<o:p></o:p></p> <p class=MsoNormal>For the full list of invalid characters for site names, folder names, server names, and file names, refer to the MS KB905231 at <a href="http://support.microsoft.com/kb/905231">http://support.microsoft.com/kb/905231</a>.<o:p></o:p></p> </div> Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com0tag:blogger.com,1999:blog-2101409208299689776.post-54339011916454687052008-07-19T01:47:00.003+08:002008-07-19T01:47:06.825+08:00SharePoint user full name not reflected according to AD<div class=Section1> <p class=MsoNormal>Ok, first of all, this issue has nothing to do with user profile crawling. SharePoint seems to create some kind of user information store as of when a user first logs into the site collection. These information will not be updated when there are changes in the user’s AD user object, such as full name, department etc. Lots of people have this problem and blogged about it, but no real solution. I’m sure they have some kind of workaround but no one has posted it before.<o:p></o:p></p> <p class=MsoNormal>Here’s my workaround. I’m sure MS does not support such actions, but we are desperate people (sometimes, at least). Run these SQL SELECT statements within your content DB, and you’ll know what to do next… <o:p></o:p></p> <p class=MsoNormal><i>SELECT * FROM AllUserData WHERE tp_ContentType = 'Person'<o:p></o:p></i></p> <p class=MsoNormal><i>SELECT * FROM UserInfo<o:p></o:p></i></p> <p class=MsoNormal><b><span style='color:red'>SOME IMPORTANT ADVICE</span></b>: 1)Backup your Content DB first before attempting any changes. 2) Experiment on your sandbox before making these changes permanent at your other actual environments. 3)You take responsibility on your own actions.<o:p></o:p></p> </div> Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com0tag:blogger.com,1999:blog-2101409208299689776.post-75305924140858555462008-07-19T01:47:00.001+08:002008-07-19T01:47:02.354+08:00SharePoint Site column default value not pre-selected<div class=Section1> <p class=MsoNormal>After fiddling with SharePoint custom content types for a while, the default values on my choice site columns in my document library suddenly refuses to work. Although a default value is being set, the items are created with these field being blank, where it suppose to fill in with the defined choice default value, as stipulated in the content type’s site column.<o:p></o:p></p> <p class=MsoNormal>Apparently, the content type has to be set as the document library’s default content type, else the choice column’s default values will not be pre-selected. In addition, if you have multiple content type that uses the same choice site column, setting any one of content type as default content type would make the other content type works too.<o:p></o:p></p> <p class=MsoNormal>Ref: <a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1706972&SiteID=1">http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1706972&SiteID=1</a><o:p></o:p></p> </div> Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com1tag:blogger.com,1999:blog-2101409208299689776.post-89266097191629088182008-07-19T00:13:00.001+08:002008-07-19T00:13:11.428+08:00Unable to manage IIS 6.0 by using Server Manager if two threads access IIS 6.0 at the same time<div class=Section1> <p class=MsoNormal>I ran into this funny problem in the production environment recently. When launching IIS Manager (inetmgr) in the WFE servers, it shows the server, but it does not allow expanding of the tree to reveal the standard Web Sites, Web Application Pools sub trees.<o:p></o:p></p> <p class=MsoNormal>A hot fix has to be applied to fix this problem. More info at MS <a href="http://support.microsoft.com/kb/946517/en-us">KB946517</a>.<b><o:p></o:p></b></p> </div> Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com0tag:blogger.com,1999:blog-2101409208299689776.post-56656527588369012032008-07-16T20:06:00.001+08:002008-07-16T20:06:41.210+08:00Powerful AD Administrative Tools (FREEWARE!)<div class=Section1> <p class=MsoNormal>Found this great tool call <b><span style='color:#C00000'>Password Control</span></b> for making bulk changes to user accounts in AD. (Thanks to a colleague for giving the tip!). Check out the feature set at <a href="http://www.wisesoft.co.uk/">http://www.wisesoft.co.uk/</a>. Other than Password Control, there are other great freeware for making an AD admin’s life easier too!<o:p></o:p></p> </div> Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com1tag:blogger.com,1999:blog-2101409208299689776.post-54021401351894778312008-07-14T22:03:00.003+08:002008-07-18T23:53:41.878+08:00Change AD Account Password via Coding<div class="Section1"><p class="MsoNormal">Found a few great articles on creating a custom page to allow user to change their AD login password through coding (cause I need to do one quickly here).<?xml:namespace prefix = o /><o:p></o:p></p><p class="MsoNormal">The new <b>.NET Framework 3.5</b> provides new method from the System.DirectoryEntry.AccountManagement namespace to change password easily. Background information at <a href="http://msdn.microsoft.com/msdnmag/issues/08/01/DSAccountManagement/">here</a>. <o:p></o:p></p><p class="MsoNormal">Steve Mushkat has a blog entry with code example on how this is done at <a href="http://glorix.blogspot.com/2007/10/ad-change-password-webpart.html">http://glorix.blogspot.com/2007/10/ad-change-password-webpart.html</a>.<span style="color:#1f497d;"> </span>His example is base on SharePoint, but can be easily adapted for other flavours.</p><p class="MsoNormal"><strong>Update:</strong> I've tried the code on my SharePoint implementation. It worked fine on a single-box MOSS environment, but it didn't work on a small farm setup. Not sure why, but I'm suspecting the environment that didn't work did not have kerberos configured properly. I've modified the code slightly to make it workable:</p>
<em><span style="color:#660000;">string strADDomain = ConfigurationSettings.AppSettings["ChangePassword_Domain"];
string strADUser = ConfigurationSettings.AppSettings["ChangePassword_User"];
string strADPassword = ConfigurationSettings.AppSettings["ChangePassword_Password"];
string strLoginName = string.Empty;
SPWeb web = SPControl.GetContextWeb(this.Context);
strLoginName = web.CurrentUser.LoginName;
PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, strADDomain, strADUser, strADPassword);
UserPrincipal user = UserPrincipal.FindByIdentity(domainContext, strLoginName);
try
{
user.ChangePassword(this.txtOldPassword.Text, this.txtNewPassword.Text);
this.lblMessage.Text = "Password changed. Please close this browser window and log back on with your new password.";
}
catch (Exception ex)
{
this.lblMessage.Text = String.Format("Password couldn't be changed due to restrictions: {0}", ex.Message);
}
finally
{
user.Dispose();
domainContext.Dispose();
}</span></em> </div>Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com0tag:blogger.com,1999:blog-2101409208299689776.post-90719995166862620332008-07-02T18:22:00.003+08:002008-07-18T23:53:14.080+08:00SharePoint publishing timer jobs woes<div class="Section1"><p class="MsoNormal">I hit a problem where the content management’s scheduling feature were not working. I am able to set the start and end publishing dates, but there’s no changes when the time comes to publish/unpublish the pages. Apparently this is due to missing timer job definition for the particular web application that is hosting the particular site collection. <?xml:namespace prefix = o /><o:p></o:p></p><p class="MsoNormal">The job does not exist in the first place because the web application were created without creating the publishing/collaboration site collection from the GUI. Instead, I’ve added the restored content DB that was build on another SharePoint box and added it directly into the web application. If I were to create a publishing/collaboration site collection, the site provisioning process would have added the missing three jobs for content scheduling, and two more jobs for handling variations.<o:p></o:p></p><p class="MsoNormal">Therefore, to get the jobs back on the web application, I have to:<o:p></o:p></p><p class="MsoListParagraph" style="TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><span style="mso-list: Ignore">1.<span style="FONT: 7pt 'Times New Roman'"> </span></span>Create a new web application<o:p></o:p></p><p class="MsoListParagraph" style="TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><span style="mso-list: Ignore">2.<span style="FONT: 7pt 'Times New Roman'"> </span></span>Create a new site collection, choosing the correct site collection template (either publishing or collaboration)<o:p></o:p></p><p class="MsoListParagraph" style="TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><span style="mso-list: Ignore">3.<span style="FONT: 7pt 'Times New Roman'"> </span></span>Ensure the jobs are created by checking it from Central Admin <span style="font-family:Wingdings;">à</span> Operations <span style="font-family:Wingdings;">à</span> Timer jobs definitions. Also check whether it runs every minute.<o:p></o:p></p><p class="MsoListParagraph" style="TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><span style="mso-list: Ignore">4.<span style="FONT: 7pt 'Times New Roman'"> </span></span>Remove the content db of the newly created site collection<o:p></o:p></p><p class="MsoListParagraph" style="TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><span style="mso-list: Ignore">5.<span style="FONT: 7pt 'Times New Roman'"> </span></span>Add the restored content db<o:p></o:p></p><p class="MsoNormal">Additional observations: If the existing web application with the restored content database already missing the job definitions, removing the content database and creating a new publishing/collaboration site collection on top of it <b><span style="color:red;">WOULD NOT</span></b> solve the problem. Strangely, the job definitions are created, but it just wouldn’t execute as defined by the minute frequency. Thus, best bet is to delete the web application and start all over again.<o:p></o:p></p><p class="MsoNormal"><a href="http://blogs.msdn.com/jannemattila/archive/2007/08/31/moss-backup-and-restore-and-missing-timer-job-definitions.aspx">Janne Mattila</a>’s blog has more detail on this issue.</p><p class="MsoNormal"><strong>Update:</strong> I tried to make the same steps as mentioned above on another enviornment, and it didn't work. I even tried to schedule a publishing start date for a new content page on the brand new blank collaboration site template, just to be sure. The page on the blank collaboration site works, but it just wouldn't work once I restore my deployment content DB. I've inspected the timer job status and discovered that the timer job last run date/time was stopped at the instance when I change the web application's content DB to the deployment content DB.</p><p class="MsoNormal">Long story short, I found MS <a href="http://support.microsoft.com/kb/942989/en-us">KB942989</a> mentioning the problem of missing timer jobs, but not on timer job stop executing. However, it indicates that a post-SP1 hot fix could fix the problem. I've downloaded, applied to all WFE and index server, and that solves the problem magically!</p><p class="MsoNormal">More information on the hot fix at MS <a href="http://support.microsoft.com/kb/942989/en-us">KB942989</a>.</p></div>Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com1tag:blogger.com,1999:blog-2101409208299689776.post-18681621850354023892008-07-02T18:10:00.003+08:002008-07-18T23:54:50.400+08:00SharePoint Current Number of Sites 0 after SQL Restore of Content DB<div class="Section1"><p class="MsoNormal">I was planning to restore a content DB backup into a SharePoint box. So I’ve created the web application, removes the default content database and add the restored content DB into the web application. Once this is done, the value “Current Number of Sites” is showing up as 0. <?xml:namespace prefix = o /><o:p></o:p></p>
<p class="MsoNormal">Apparently, when adding a content DB into a web application, the SiteIDs (GUIDs) in the content DB are added into the [SharePoint_Config].[SiteMap] table. If a site with the same SiteID already exist in the SharePoint box, the add process will fail without much feedback from the Central Admin page. The logs from the 12 hive doesn’t give much indication either. The only clue you get is from the application event log. An inspection on the event log shows the following error:<o:p></o:p></p><img id="BLOGGER_PHOTO_ID_5218360686373896114" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQrXnX-thRifkQYlv8hAY4KayWGTW7IXrxW07Pnirt4tBBN7z6TnueBPKclTxRTLzsAcNYEAd8IZzcRFMTf1qUBTGs1xFAQ23hNKKn8z5WO8E_6BjpK-YrUK5l22wX-ibv5RgExpXxA5c/s400/DuplicateSiteIDErrorLog.JPG" border="0" />
<p class="MsoNormal">Therefore, must take note that no two identical site can reside within the same SharePoint box. There might be possible to patch the SiteID for the restored content DB to another GUID value, provided you know where to patch <span style="font-family:Wingdings;">J</span>.<o:p></o:p></p></div>Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com1tag:blogger.com,1999:blog-2101409208299689776.post-73392858922130549192008-06-27T14:11:00.002+08:002008-06-27T14:34:25.732+08:00Turn on HTTP Compression on IIS 6.0<div class="Section1"><p class="MsoNormal">I’ve seen my colleague have done it before, so I decided to try it out myself on my current project.<?xml:namespace prefix = o /><o:p></o:p></p><p class="MsoNormal">Here’s the background information on HTTP compression from TechNet, <a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/25d2170b-09c0-45fd-8da4-898cf9a7d568.mspx?mfr=true">Using HTTP Compression for Faster Downloads (IIS 6.0)</a>.<o:p></o:p></p><p class="MsoNormal">Information on turning on and configuring HTTP compression from TechNet just too brief, as seen in the guide <a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/d52ff289-94d3-4085-bc4e-24eb4f312e0e.mspx?mfr=true">here</a>. It shows how to turn on the HTTP compression feature from IIS 6, but that’s only half of the steps to make HTTP compression works. Therefore, I turn to blogs instead. Following the steps exactly from this article by <a href="http://www.dotnetjunkies.com/HowTo/16267D49-4C6E-4063-AB12-853761D31E66.dcik">Donny Mack</a> works well for my case. Other’s might not be so lucky, as mentioned by <a href="http://www.codinghorror.com/blog/archives/000059.html">Jeff Atwood</a> on his <a href="http://www.codinghorror.com/blog/archives/000059.html">blog</a>.<o:p></o:p></p><p class="MsoNormal">In summary, following are the steps to turn on HTTP compression:<o:p></o:p></p><p class="MsoListParagraph" style="TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><span style="mso-list: Ignore">1.<span style="FONT: 7pt 'Times New Roman'"> </span></span>From IIS management console (inetmgr), right-click on <b>Web Sites</b>, then click <b>properties</b>, go to <b>Service</b> tab. Under <b>HTTP compression</b>, check <b>Compress application files</b> and <b>Compress static files</b>. Leave the <b>Temporary directory</b> and <b>Maximum temporary directory size</b> as default.<o:p></o:p></p><p class="MsoListParagraph" style="TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><span style="mso-list: Ignore">2.<span style="FONT: 7pt 'Times New Roman'"> </span></span>This step is optional for me, as I didn’t observe any difference in compression ratio if I skip this step. Right-click on <b>Web Service Extension</b> node and select <b>Add a new Web service extension</b>. In put extension name “HTTP Compression”, click on Add button and select “C:\WINDOWS\system32\inetsrv\gzip.dll”, check the checkbox <b>Set extension status to Allowed</b>.<o:p></o:p></p><p class="MsoListParagraph" style="TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><span style="mso-list: Ignore">3.<span style="FONT: 7pt 'Times New Roman'"> </span></span>Right-click on the root of the IIS server and select properties. Check Enable Direct Metabase Edit.<o:p></o:p></p><p class="MsoListParagraph" style="TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><span style="mso-list: Ignore">4.<span style="FONT: 7pt 'Times New Roman'"> </span></span>Now we proceed to edit the MetaBase.xml file, located at “C:\WINDOWS\system32\inetsrv\MetaBase.xml” Do make a backup first before you proceed.<o:p></o:p></p><p class="MsoListParagraph" style="TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><span style="mso-list: Ignore">5.<span style="FONT: 7pt 'Times New Roman'"> </span></span>Within the file, locate the tag <IISCompressionScheme>. There are two entries with the same tag, the first has a property of “<b>…Compression/deflate</b>”, while the second has a property of “<b>…Compression/gzip</b>”. We’re interested on the second one. I tried making changes on the deflate but there’s no difference for my case. So I left it as it is.<o:p></o:p></p><p class="MsoListParagraph" style="TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><span style="mso-list: Ignore">6.<span style="FONT: 7pt 'Times New Roman'"> </span></span>Most important properties to change are <b>HcDynamicCompressionLevel</b>, <b>HcFileExtensions</b> and <b>HcScriptFileExtensions</b>. I’ve set <b>HcDynamicCompressionLevel</b> to 10, added static file extensions to <b>HcFileExtensions</b>, and dynamic file extensions (e.g. aspx) to <b>HcScriptFileExtensions</b>. Note that the file extensions must be separated by next line (enter key).<o:p></o:p></p><p class="MsoListParagraph" style="TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><span style="mso-list: Ignore">7.<span style="FONT: 7pt 'Times New Roman'"> </span></span>Save the MetaBase.xml file and perform a iisreset.<o:p></o:p></p><p class="MsoNormal"><o:p></o:p></p><p class="MsoNormal">I’ve used several pages from my SharePoint 2007 portal do benchmark the result, using Ethereal to sniff out the total packet size. Overall, I witness roughly compression ratio of 65% to 75%. Adding file extensions for images would not help much, as most browsers would have cached the files and would not perform another download. Unless, your pages contains lots of different images that the browser would not have cached before.<o:p></o:p></p><p class="MsoNormal">The following properties information are rather useful, taken directly from Donny’s blog:<o:p></o:p></p><ul style="MARGIN-TOP: 0in" type="disc"><li class="MsoNormal" style="mso-list: l1 level1 lfo2"><b><span style="color:#cc0000;">HcDoDynamicCompression</span>.</b> Specifies whether dynamic content should be compressed. This is <i>important</i> because dynamic content is by definition always changing, and IIS does not cache compressed versions of dynamic output. Thus, if dynamic compression is enabled, each request for dynamic content causes the content to be compressed. Dynamic compression consumes considerable CPU time and memory resources, and should only be used on servers that have slow network connections, but CPU time to spare. <o:p></o:p></li><li class="MsoNormal" style="mso-list: l1 level1 lfo2"><b><span style="color:#cc0000;">HcDoStaticCompression</span>.</b> Specifies whether static content should be compressed. <o:p></o:p></li><li class="MsoNormal" style="mso-list: l1 level1 lfo2"><b><span style="color:#cc0000;">HcDoOnDemandCompression</span>:</b> Specifies whether static files, such as .htm and .txt files, are compressed if a compressed version of the file does not exist. If set to True and a file doesn't exist, the user will be sent an uncompressed file while a background thread creates a compressed version for the next request. <o:p></o:p></li><li class="MsoNormal" style="mso-list: l1 level1 lfo2"><b><span style="color:#cc0000;">HcDynamicCompressionLevel</span>.</b> VAL(1-10) specifies the compression level for the compression scheme, when the scheme is compressing dynamic content. Low compression levels produce slightly larger compressed files, but with lower overall impact on CPU and memory resources. Higher compression levels generally result in smaller compressed files, but with higher CPU and memory usage. <o:p></o:p></li><li class="MsoNormal" style="mso-list: l1 level1 lfo2"><b><span style="color:#cc0000;">HcFileExtensions</span>.</b> Indicates which file name extensions are supported by the compression scheme. Only static files with the specified file extensions are compressed by IIS. If this setting is empty, no static files are compressed. <o:p></o:p></li><li class="MsoNormal" style="mso-list: l1 level1 lfo2"><b><span style="color:#cc0000;">HcScriptFileExtensions</span>.</b> Indicates which file name extensions are supported by the compression scheme. The output from dynamic files with the file extensions specified in this property are compressed by IIS.<o:p></o:p></li></ul></div>Swee Chinghttp://www.blogger.com/profile/08488286895540870926noreply@blogger.com3