How can I easily force the SharePoint Web Part Maintenance Page?

Append ?contents=1 to your querystring.  Example: Try it.  It’s cool.  Thanks Shane Young for pointing this out in our Survival class.  🙂
We were talking in class about deleting closed web parts… it’s a pain to try to get to the UI where you can delete "closed web parts."  I find that most page perf issues I see are related to bad web parts that are actually closed. 
I’m not a fan of any closed web parts.  I think it’s a poor feature.  Just my 2 cents.  The idea of closing web parts for private views… just didn’t work like it was designed and has more downsides than up.

Words of Caution on SQL Mirroring with SharePoint

I’ve had a lot of conversations with my friend Mike Watson spent a ton of time working on Disaster Recovery strategies in his time working on DR for the Hosted SharePoint and Microsoft IT deployment, as well I’ve gathered a lot of feedback in various conversations with customers, MCS, and other SIs.  One thing I’ve gathered from various conversations and in my own experience is there should be some words of caution for those venturing into the SQL mirroring space.  These words deal with mirroring for SharePoint in SQL 2005, I think SQL 2008 still has promise or potential.  Feel free to comment as I expect this is controversial.
Also check out the latest whitepaper on SQL mirroring, you’ll see the holes are a bit smaller as we all gather more info on this complex operation.
1. It isn’t ready – In my experience SQL mirroring is half there for SharePoint in SQL 2005.  The idea is awesome, but since the granularity is in the database I have heard way too many times of failures with unknown reasons.
2. Too complex – with operations folks it is a pretty big jump for real admins to jump from doing clustering (doable) to mirroring (complex).  It increases the level of difficulty for supporting the environment by a factor.  I find anyone who is new to SharePoint should wait a year to mess with something like SQL mirroring.  Unless it’s a SQL team, the SharePoint ops folks will find the complexity just way too high.
3. Doesn’t live up to it’s potential – Without Mirroring really giving you automatic failover what does it give you?  Manual failover is complex and even the most experienced SharePoint people will be challenged to properly failover the farm across the databases…. let alone dealing with the config, SSP databases and Index.
4. Consumes too much memory – this may not be a big deal for most of you, but I’ve found the amount of memory that SQL mirroring sucks up is really something to be aware of if not concerned about.  The SQL team themselves had a low threshold for mirroring due to memory from what I could glean.  In Mike’s own testing he found there really was an upper limit to mirroring since SQL would consume more and more memory with each database that’s added.  Please don’t assume that I had mike review this post, since he hasn’t and he may not agree with everything I’m saying here.  I’ll let him respond on his blog or refute this.
5. Mirroring over the WAN is obviously a problem too since figuring out the challenges of latency really end up pushing log shipping which is an old TCP/IP netbios basically file sharing type of operation.  Sadly inefficient, chatty and continues to still be superior to mirrioring in my opinion.  Again I say SQL 2008 and Mirroring step up the challenge. 
My 2 cents is to wait for SQL 2008 and pretend like Mirroring doesn’t exist unless you have a top notch SQL team and a top notch SharePoint team.  If you do, then you’ll likely be looking at fancy tools that will help you manage the failover and manage the namespace challenges that come with mirroring.  I know there are alias workarounds that some have come up with that really reduce the complexity, but the index and SSP challenges don’t completely go away.  Don’t sell yourself short with Clustering vs. Mirroring or with Log Shipping vs. Mirroring.  In both cases the alternative to mirroring is more simple and does the job in most cases.  It is the exceptions which is why we are all looking at mirroring, so let’s not totally write it off, but keep it in your back pocket.

TechEd South East Asia is going to Rock!

I had a great time at TechEd US in Orlando.  WOW it was awesome!  The sessions were great, the venue wasn’t bad (Go Disney/Universal/SeaWorld etc…), but the social experience was tough to beat.  Obviously it’s better when we can combine the IT Pro and Dev audience.
TechEd South East Asia for parties is THE best!  Last year I found a few MVPs to hang with that knew the best places to go.  KL is very alive at night.  Last year’s attendees party we were at a top club of Malaysia and we had Malaysian idol.  They had models, pictures, awesome music, and games.  Everyone had a great time.
Where else can you combine great technical sessions for cheap, awesome social environment with people from all over asia and only the best from corp, plus the best of the best repeat speakers that know how to have fun.  Then add on a firefly tour, and Elephant reserve where you can feed the elephants and ride one into a river!  Not in the US! The very cheap Tours are unique, I blogged about a few of them last year while Europe has become prohibitive in cost.  Malaysia and South East Asia has continued to be a great place to visit from around the globe. 
I put together a couple Youtube videos from my South East Asia experience and me with monkey on my head.
Of course you’ll likely go for the rich technical sessions.  I’ve got 3…
SharePoint High Availability, Backup/Restore and Disaster recovery
The most frequently asked question of a SharePoint Administrator is how do I backup my farm, and then what do I do for high availability and disaster  recovery.  This common, but often complex question will be broken down with the best practices and lessons learned.

SharePoint Governance: Chaos No More, 10 Steps to Success
The chasm between business and IT can be breached with SharePoint.  These 10 key steps to successful SharePoint deployments will help you bridge that gap and help you utilize the full power of SharePoint and without it… it’s chaos.

STSADM – Automating SharePoint Administration
STSADM is the hidden path to simplify and automate SharePoint Administration.  There are many properties and commands that are only accessible to the command line interface.  This session will provide examples and tips for using the power of STSADM and demonstrating how it can simplify your life.
See you there!


Troubleshooting Indexing with ULS Log

I thought this addition deserved it’s own post.  Not burried in the previous which again comes from Nick Hardin and Sam Crewdson’s MS IT performance presentation AG207.  Not sure who gathered this, but this was in the appendix and not shared at the conference other than in the deck…
The following process can be used to figure out where search query time is being spent.
ULS logs should be on a separate fast drive
Set tracing level for MS Search Query Processor category to High.
01/23/2008 19:29:28.42  w3wp.exe (0x0680)   0x13C8    
Search Server Common MS Search Query Processor    0    High        
Completed query execution with timings: 437 328 297 234 172 124 – File:c:o12spdev12spsearch2ytriptripoliicommandqp.cxx Line:1750
The 5 numbers v1,v2,v3,v4,v5, v6 (in the sample above 437 328 297 234 172 124) are time measurements in milliseconds
V1 = Total time spent in QP. V2-V1 = Time spent retrieving properties and hit highlighting.
V2 = Latency of the query measured after the duplicate detection. V3-V2 = Duplicate detection time
V3 = Latency of the query measured after security trimming. It includes V4 plus retrieval of descriptors form SQL and access check. V3-V4 = Security Trimming time
V4 = Latency of the query measured after the joining of index results with the SQL part of the query. This includes V5 and the time spent in SQL for resolving the SQL part of advanced queries (e.g. queries sorted by date or queries including property based restrictions like AND size > 1000).  In short: V4-V5 = Join time
V5 = Time spent waiting for the full-text query results from the query server (time spent in index).
V6 = Cumulated time spent in various  calls to SQL except the property fetching.
Then use the logparser on it !!!!
LogParser "Select Timestamp, Extract_token(Message,6, ‘ ‘) as TotalQPTime, Extract_token(Message,10, ‘ ‘) as TimeSpentInIndex from ‘<servername>-<output-format>.log’ Where Category = ‘MS Search Query Processor’ AND Message Like ‘Completed query execution with timings:%’" -i:TSV -iCodepage:-1 -fixedSep:ON

Great MS IT Goodness on Search/Indexing Optimization From SPC

I was looking at the SharePoint Conference Deck from Nick Hardin and Sam Crewdson and found some golden nuggets in their deck as well as in the appendix that likely hasn’t seen the light of day until the DVDs just went out.  Now it’s totally public… like it wasn’t before 🙂
I’m a bit supprised some of this hasn’t made it to the blogosphere, but I wanted to give them credit for sharing their findings or at least their gleanings from their own tests, reverse engineering or from their conversations with Devs, PMs, Testers or whoever.
I’m sure Corey Burns should get some credit and even Andre Heymann who I’m sitting with in his apartment in Zurich wants some credit.
Maximizing Indexing Performance on Servers with 64 bit and 8GB or more RAM.  Improves speed.  (Obviously I have to really caution you since this is registry and you should not do this in production without testing it first, and always remember to back up your registry first!)
RegKeyName  RegKey Value (Decimal) Suggested Value (Decimal)
DedicatedFilterProcessMemoryQuota  104,857,600 209,715,200
FilterProcessMemoryQuota  104,857,600 209,715,200
FolderHighPriority 50 500

Reporting samples with LogParser

Looking for Cheap Reporting?  Look no further than the text based log parser.  When you’re ready for real reporting then check out Nintex Reporting 🙂

Top 10 users sorted by alias
logparser.exe "SELECT TOP 10 cs-username, count (*) AS TOTAL from \servernamelogshareW3SVCex080215.log group by cs-username order by TOTAL desc“

Top 100 hits by Username
logparser.exe "SELECT top 100 * from \servernamelogshareW3SVCex080215.log where cs-username like ‘%%username’ order by time desc“

Number of hits by IP Address
logparser.exe "select count (*) as number, cs-host, cs-username, c-ip, cs-uri-stem from \servernamelogshareW3SVCex080215.log group by c-ip, cs-host, cs-username, cs-uri-stem order by number desc“

Number of hits by URL match
Logparser.exe "SELECT count (*) from \sp-sfw-r07e$WWWLogW3SVCex080228.log where cs-uri-stem like ‘%%userprofileservice.asmx’"