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’"

Microsoft Operations Framework 4.0 (MOF v4) is important to SharePoint

I don’t know how many of you have followed the exciting world of Operations Frameworks from ITIL to MOF to MSF and even ISO 20000.  When I found the forums I searched for SharePoint and came up with no results.  Not a lot of content on operations content for SharePoint unfortunately.  A lot of people focused on the PLAN portion, but not a lot on Manage and Operate. 

So, one thing I wanted to gauge interest in is Operations Frameworks, specifically MOF v4 and SharePoint.  Now that I’m working on doing product management for Nintex Reporting, I was thinking… a cool topic would be how to manage your Operations with various reporting needs with an obvious focus on both what you get with SharePoint reports, the Assessment tool (more below), PerformancePoint (or the old Business Score Card Manager) and with Nintex Reporting 2008.

As I look around the wheel there are obviously a lot of processes and policies that simply need to be put into place, but some examples of real world uses of reporting for example are around "Reliability, Operational Health, and Compliance."  Taking each of these individually when you look at reliability there are performance counters that capture system uptime.  Those perf counters could be gathered with the performance collector, or captured and viewed in perfmon.  The Operational Health could be a special dashboard that lists various things like Consumption of the following… % disk, % CPU,   Memory Available and so on.  Compliance is something that would also need either a custom dashboard or web parts assembled to track specific document consumption or tracking policies.

 

What you’ll notice in the diagram below with MOF v4 they have combined MSF with MOF 3.0.  They’ve also simplified some of the service management functions.

Here’s a great summary of what MOF is from the IT library on TechNet referenced below… "The goal of MOF is to provide guidance to IT organizations to help them create, operate, and support IT services while ensuring that the investment in IT delivers expected business value at an acceptable level of risk. 

MOF’s purpose is to create an environment where business and IT can work together toward operational maturity, using a proactive model that defines processes and standard procedures to gain efficiency and effectiveness. MOF promotes a logical approach to decision-making and communication and to the planning, deployment, and support of IT services."

 

MOF IT Library

Get the Microsoft Operations Framework 4.0

MOF Team Blog Announcement

MOF v4 Diagram by Microsoft (listed on blog and in MOF library)

MOF-all.gif

 

I would like to give you some concrete examples of how MOF can be used with SharePoint.

From the Manage quadrant.  Deliverables, purposes taken from MOF documentation.

Governance, Risk, and Compliance
Deliverable: IT objectives achieved, change and risk managed and documented
IT services are seamlessly matched to business strategy and objectives

Purpose: Support, sustain, and grow the organization while managing risks and constraints
Example: SharePoint policy for customization allows 10 people in the corporation to manage sites with SharePoint Designer thus mitigating IT risk and providing business strategy for designs and business objectives.  Plan is support only those people trained to be allowed to use it for simple workflows and master page design which is managed centrally.  More common workflows and business processes would use Nintex Workflow a tool which doesn’t require any client side requirements or use of the all too powerful SharePoint Designer as it can manage it’s workflows and reports in the web UI.

Change and Configuration
Deliverable: Known configurations and predictable adaptations
IT services are predictable, reliable, and trustworthy

Purpose: Ensure that changes are planned, that unplanned changes are minimal, and that IT services are robust
Example: SharePoint Deployment team decides they need a change advisory board for their change management process.  Certain big changes including service packs would be required to go through proper testing and all custom code would be rolled into SharePoint solutions deployment packages and go through proper testing to ensure security trust levels (CAS) and GAC usage was set an appropriate level based on what was needed.  Thus ensure predictable and tested results introduced during planned downtime with proper verification.

Team
Deliverable: Clear accountabilities, roles, and work assignments
IT solutions are delivered within specified constraints, with no unplanned service degradation

Purpose: Agile, flexible, and scalable teams doing required work
Service operation that is trusted by the business
Example: How do you have clear roles in SharePoint?  You have separate Dev teams from Ops or production teams.  These teams would have clear roles.  Using RACI a simple spreadsheet is used to identify what actions are taken during deployment and a list of maintenance tasks in SharePoint to determine who needs to perform the work, who is responsible, accountable, consulted and informed… Obviously you need to have the right skin in the game with everyone agreeing to these responsibilities so you know who to talk to if there’s a problem and to manage appropriate risk when something unexpected (like a required hotfix or something more odd like out of memory issues) is introduced.

Should I put together a whole whitepaper on the topic?  I am working with Nicola Young and John Ross on a Planning and Governance Course and you’ll definitely see this type of content plus exercises in this class.

Loved these examples and looking for some templates?  I found some good starts…

IT pros can choose the Operations Framework tools and templates also referred to as MOF Job Aids that are likely to be most useful given the task at hand. Here is a list of what is available within each package:

  • Manage
    • Change Management Forward Schedule Template
    • Request for Change Template
    • Risk Template Tool
  • Plan
    • Operating Level Agreement Template
    • Operations Level Agreement
    • Privacy Policy Sample
    • Service Level Agreement Template
    • SIP Service Catalog Sample
  • Deliver
    • Functional Specification
    • Migration Plan
    • Site Deployment Project Plan
    • Test Cases Workbook
    • Test Plan
    • Test Specification
    • Training Plan
    • Vision Scope
  • Operate
    • Incident Management Ticket Template
    • Operations and Services Description Template

Look for the following packages

MOF Job Aids – Deliver.zip, MOF Job Aids – Manage.zip, MOF Job Aids – Operate.zip, MOF Job Aids – Plan.zip

I think we need to each send feedback to mof@microsoft.com to let them know we’d like SharePoint specific templates.  Be sure to let this alias know if you like those job aids or if they don’t work.  Why is it all about desktop and Vista?  Why not some Exchange or SharePoint?

If you are confused about MSF, MOF, and ITIL in continuous improvement there is a decent diagram from MOF solution accelerator article that shows the relationships and talks about how they come together.

When I was looking at the MOF v4 content I came across another tool that I worked on when I was at MS.  The Asset inventory tool is about discovering what SharePoint Servers are out there.  Looks like it is still in beta since February, which is when I think I saw it last.  I mention this tool in this context ’cause I do think it’s a very early step in MOF.  You need to know what you have before you can start to optimize it or a late step if you’re considering retiring the service or servers.  Here’s a bit of info from the TechNet resource on this solution accelerator:

The main purpose of the SharePoint Asset Inventory Tool is to give the IT administrator answers to a number of important questions through the generation of reports. These reports include information on:

  • The servers running some version of SharePoint.
  • The installed SharePoint features.
  • The total number of SharePoint sites on each server. 
  • The total number of documents on each server.
  • The total number of documents grouped by extension on each server.
  • The time since the SharePoint assets in each server were last modified.
  • The customized SharePoint sites and items on each server.
  • The number of SharePoint lists on each server, grouped by the number of items on each list.

Finally, if you’re in my TechEd Governance session next week, you’ll see a slide on this with some more emphasis about how important operations frameworks are to deployment success.