In this post I review “SharePoint 2010 Six-In-One” by Chris Geier, Becky Bertram, Andrew Clark, Cathy Dew, Ray Mitchell, Wes Preston, and Ken Schaefer.
I read a lot. Honestly, I assume that most people who work with technology spend a fair bit of their time reading. Maybe it’s books, maybe it’s blogs – whatever. There’s simply too much knowledge out there, and the human brain is only so big, to not be brushing-up on the ol’ technical skill set on a fairly regular basis.
When free books are dangled in front of me, naturally I jump. I jump even higher when they’re books that I probably would have ended up buying had they not been given to me gratis.
The Opportunity
Several months ago, I received an e-mail from Becky Bertram. Becky is an exceptionally knowledgeable SharePoint MVP and all-around wonderful woman. Becky and I first met (albeit briefly) at the MS SharePoint Conference in Las Vegas (2009), and since that time we’ve spoken at a couple of the same events.
In my conversations with Becky and through Twitter, I knew that she was part of a team that was working to assemble a book on SharePoint 2010. In her e-mail to me, she asked if I’d be interested in a copy of it. Given what I’ve said about reading, it should come as no surprise to see me say that I jumped at her offer.
Fast forward a bit. I’ve had SharePoint 2010 Six-In-One for a couple of months now, and I’ve managed to read a solid 80% of its 500+ pages thus far. Unfortunately, I’m a very slow reader. I always have been, and I probably always will be. I probably should have told Becky that before she agreed to send me a copy of the book …
Top-Level Assessment
Let me start by saying that simply put, I think this book is an excellent SharePoint resource. The reasons that one would find the book useful will likely vary based on their existing knowledge of SharePoint, but I believe that everyone from across the spectrum, newcomer to SharePoint journeyman, will find the book helpful in some way.
The rest of this post/review explains the book, its intended audience, what it conveys, and some of my additional thoughts.
The Authors
First, let me start by giving credit where it was due. The SharePoint 2010 Six-In-One is the collaborative effort of seven different and active members of the larger SharePoint community.
I know several of these folks personally, and that’s one of the reasons why I was so excited to review the book. Most of the authors are active in user groups. Nearly all contribute socially through Twitter and other channels. Many speak at SharePoint Saturdays and other events. Some are designated Most Valuable Professionals (MVPs) by Microsoft. All are darn good at what they do.
Target Audience
This book was written primarily for relative newcomers to SharePoint 2010, and this demographic is the one that will undoubtedly get the most value out of the book. As the title of the book indicates, the authors covered six of the core SharePoint areas that anyone wrangling with SharePoint 2010 would need information on:
Branding
Business Connectivity Services
Development
Search
Social Networking
Workflow
The book devotes a few chapters to each topic, and each topic is covered solidly from an introductory perspective. Many of the common questions and concerns associated with each topic are also addressed in some way, and particulars for some of the topics (like development) are actually covered at a significantly deeper level.
Although it might get glossed-over by some, I want to call attention to a particularly valuable inclusion; specifically, the first three chapters. These chapters do a fantastic job of explaining the essence of SharePoint, what it is, how to plan for it, concerns that implementers should have, and more. Given SharePoint’s complexity and “tough to define” nature, I have to applaud the authors on managing to sum-up SharePoint so well in only 60 pages. Anyone getting started with SharePoint will find these chapters to be excellent on-ramp and starting point for SharePoint.
Contents
The following is the per-chapter breakdown for the book’s content:
Chapter 1: SharePoint Overview
Chapter 2: Planning for SharePoint
Chapter 3: Getting Started with SharePoint
Chapter 4: Master Pages
Chapter 5: SharePoint Themes
Chapter 6: Cascading Style Sheets and SharePoint
Chapter 7: Features and Solutions
Chapter 8: Introducing SharePoint Development
Chapter 9: Publishing in SharePoint Server 2010
Chapter 10: Introducing Business Connectivity Services
Chapter 11: Building Solutions Using Business Connectivity Services
Chapter 12: Why Social Networking Is Important in SharePoint 2010
Chapter 13: Tagging and Ratings
Chapter 14: My Site
Chapter 15: Workflow Introduction and Background
Chapter 16: Building and Using Workflow in SharePoint 2010
Chapter 17: Visual Studio: When SharePoint Designer Is Not Enough
Chapter 18: Introduction to Enterprise Search
Chapter 19: Administering and Customizing
Chapter 20: FAST Search
Chapter 21: Wrapping It All Up
The Experienced SharePoint Reader
So, what if you happen to know a bit about SharePoint and/or have been working with SharePoint 2010 for some time? I’m in this particular boat, and I have good news: this book strikes just the right balance of breadth and depth so as to be useful as a reference source. Although the book doesn’t provide really deep dives into its topic areas (not its intent), I found myself reaching for it on a handful of occasions to get myself going on some SharePoint tasks I had to accomplish. A quick review of Cathy’s chapters on branding, for instance, gave me just the right amount of information needed to get started on a small side project of my own.
Summary
Bottom line: SharePoint 2010 Six-In-One contains just the right mix of breadth and depth so as to be immediately informative to newcomers but also useful as a reference source in the longer term. I’d recommend this book for anyone working with SharePoint, and I’d especially recommend it to those who are new to SharePoint 2010 and/or seeking to get a grasp on its core aspects.
In this post I investigate the differences between the Backup-SPFarm and Backup-SPConfigurationDatabase cmdlets in the process of configuration-only backup in SharePoint 2010. I also extrapolate a bit on how the Backup-SPConfigurationDatabase may have come to be.
I recently authored a blog post titled “Configuration-Only Backup and Restore in SharePoint 2010,” and in that post I tried to address some of the false hopes and misunderstandings I saw arising around SharePoint 2010’s configuration-only backup and restore capabilities.
While I was putting the post together, I was reminded of another head-scratcher that I’ve seen confuse some folks on a handful of occasions; specifically, what the differences are between the Backup-SPFarm and Backup-SPConfigurationDatabase PowerShell cmdlets in SharePoint 2010 when it comes to configuration-only backup.
Before I go too far, I should probably rewind a bit and explain a few things.
Many Paths to the Destination
If you aren’t yet familiar with configuration-only backup and restore in SharePoint 2010, the basics of it are covered in this TechNet article and in my previous post. I’d recommend checking both out before continuing.
Configuration-only backups in SharePoint 2010 can be generated in several different ways;
Using the “Backup up only configuration settings” option when running a backup using Central Administration’s Farm Backup and Restore capabilities.
Through STSADM.exe using STSADM.exe –o backup with the –ConfigurationOnly switch.
By running the Backup-SPFarm PowerShell cmdlet along with the –ConfigurationOnly switch.
By executing the Backup-SPConfigurationDatabase PowerShell cmdlet.
Option #1 is obviously designed for the “UI-oriented” administrator who wants to accomplish a configuration-only backup with a point-and-click interface. Option #2 works, but Microsoft has been pretty clear that STSADM.exe is on its way out and should be generally be avoided in favor of the PowerShell cmdlets shown in Options #3 and #4.
Options #3 and #4 are where I’ve actually seen some administrative head-scratching start. Both options leverage PowerShell, and both produce a configuration-only backup. The Backup-SPConfigurationDatabase cmdlet would seem most appropriate for the job … but is it? If it is most appropriate, then why the redundant capability with the Backup-SPFarm cmdlet?
Two Cmdlets, One Function?
We have two PowerShell cmdlets that produce the same type of backup set. Understanding how the cmdlets differ starts with an analysis of the syntax and parameters for each one. Let’s start by looking at the syntax for each of the cmdlets in full.
Each of the cmdlets requires that you specify where the backup set should be created using the –Directory switch, and each cmdlet permits the selection of either the entire configuration hierarchy (the default) or specific subset of it through the –Item switch.
There’s quite a bit of noise in the full syntax for each cmdlet, particularly for Backup-SPFarm, so let’s distill things down a bit and look at each cmdlet in turn.
Backup-SPFarm
For the purposes of this discussion, the following represents the core syntactical elements of interest for configuration-only backup using the Backup-SPFarm cmdlet:
All you need to do is specify the –ConfigurationOnly switch and you’re ready to go. There’s really not much more to it than that.
Under the hood, this method of configuration-only backup creation is the same as running a configuration-only backup operation from within SharePoint Central Administration. Backup-SPFarm assumes that you’ve got a live SharePoint farm, that it’s operating properly, and that you want to capture its configuration with the backup process.
Backup-SPConfigurationDatabase
So then, what’s the deal with Backup-SPConfigurationDatabase?
Clearly there’s something more going on with this cmdlet. Looking at the parameters, it should be clear that the –DatabaseName and –DatabaseServer switches allow you to specify an alternate configuration database and server location as the target of the configuration-only backup operation you intend to perform. If you happen to require SQL Server authentication to access the configuration database, then you can specify connection credentials with the –DatabaseCredentials switch.
In most cases where I’ve seen the Backup-SPConfigurationDatabase cmdlet described, these extra database-centric parameters have been passed-off as giving you the ability to backup configuration databases that reside in other (non-local) farms. I’ve also seen it suggested that it would be possible to centralize configuration-only backups for multiple farms using this cmdlet. While I think that those are certainly possibilities, I think that they fail to consider the bigger picture and backup/restore as an end-to-end process.
It’s All About Recovery
First, let me close the case on the Backup-SPFarm cmdlet. Under normal circumstances, Backup-SPFarm is how you should be running a configuration-only backup if you need it. The TechNet documentation spells this out in the description for both the Backup-SPFarm and Backup-SPConfigurationDatabase cmdlets. Although Backup-SPConfigurationDatabase can be used to backup the configuration database of an operational farm, that’s not really its intended use (as I see it, anyway).
To understand the real value of the Backup-SPConfigurationDatabase cmdlet, you need to think past the execution of backups and consider the process of recovery. In many of the organizations I’ve consulted for, the SharePoint environments were not protected using the native backup and restore capabilities that come with the platform. Quite a few of these mid-size and enterprise organizations handled SharePoint farm protection using SQL Server backups, third-party tools, or a combination of the two. Usability guidelines for the native backup capabilities were sometimes the reason for avoiding SharePoint’s built-in tools; in other cases, backups were controlled and managed by a different internal group that had already standardized on their own (non-SharePoint) backup tool or product.
In each of the aforementioned backup scenarios, the primary goal was protection of SharePoint’s SQL Server databases. Content databases were utterly critical targets in these backup scenarios since nothing would bring them back if they were lost. Whether or not other databases were backed up depended on the recovery strategy. In the event of catastrophic farm failure, some administrators try to recover all parts of the farm; others prefer to rebuild the farm from scratch and bolt the content databases back in. Many different approaches to the recovery challenge exist, and each has benefits and disadvantages.
Regardless of the restore approach taken for database backups, the SharePoint farm configuration database has generally been regarded as relatively useless. After all, farm configuration databases are not normally portable. When you rebuild a SharePoint farm, you end up with a new farm configuration database. In SharePoint 2007, it was generally accepted that the farm configuration database was “throwaway;” backing it up wasn’t even necessary unless you had some very specific (and oftentimes proprietary) use case for it.
The Restore Process: SharePoint 2010-Style
With SharePoint 2010, the question of “should I backup the farm configuration database?” should generally be answered with a “yes.” The same restrictions regarding the use of a farm configuration database backup still apply from SharePoint 2007 (i.e., you can’t simply “drop it into” a live SharePoint farm and go), but we now have configuration-only backup and restore with SharePoint 2010.
If you think about the database or file-based approach to backup, and you consider the process of restoring or rebuilding a SharePoint farm, then you’ll probably understand where the Backup-SPConfigurationDatabase cmdlet actually fits in. The cmdlet is less about backup than it is about restore.
If you’re trying to put a farm back together after a catastrophic failure using database backups, then you’re probably going to follow a series of steps that starts out like this:
Rebuild your servers with their operating systems
Install SharePoint
Create a new SharePoint farm (with a new farm configuration database)
Restore your old farm’s databases
Once you’ve completed step #3, you actually have a working SharePoint farm – it just doesn’t look anything like the farm you’re trying to rebuild/restore yet. You’ll probably still need to re-provision services and service applications, re-establish all of your farm’s configuration settings, etc.
Assuming you were capturing your farm configuration database as part of the backup cycle for your old farm, then step #4 is where the Backup-SPConfigurationDatabase can be brought in to work its magic. The Backup-SPConfigurationDatabase does actually require a functional farm to properly operate (even against another configuration database), but it can be used to execute a configuration-only backup against the old (pre-catastrophe) farm configuration database that was restored into SQL Server from backup in step #4. The configuration-only backup set that is generated through the Backup-SPConfigurationDatabase action can then be brought into the rebuilt farm almost immediately using the Restore-SPFarm cmdlet with the –ConfigurationOnly switch engaged.
The Data Protection Manager 2010 Connection
I’ll be clear and state that I don’t have hard evidence to say with certainty that my take on the Backup-SPFarm and Backup-SPConfigurationDatabase division of responsibilities is what Microsoft envisioned when they created them, but I am relatively confident based on what I’ve seen and know – especially when I factor-in Microsoft’s data protection product offerings and enterprise backup/restore strategy.
In particular, I’m talking about Microsoft’s own System Center Data Protection Manager (DPM) product line. The DPM product line conducts its backup and restore operations through the Volume Shadow Copy Service (VSS) that is built into the Windows operating system. VSS is a very powerful mechanism for the creation of consistent, point-in-time file snapshots … but at its core, VSS is file-based.
Even though DPM advertises some integration capabilities with SharePoint, it isn’t “aware” of SharePoint beyond its interface with the SharePoint Foundation Volume Shadow Copy Service Writer (SPF VSS Writer) and the SPF VSS Writer’s subordinate search index writer. For all practical purposes, this means that DPM can’t really treat SharePoint backups as much more than file-based backups. DPM’s approach to SharePoint farm protection is to backup SQL Server databases (including the configuration database) and the farm’s search index partitions. It doesn’t understand farm metadata, IIS configuration settings, the SharePoint Root (aka “14 hive”), etc. These additional targets can be backed-up using DPM’s file system protection capabilities, but they aren’t associated in any way with other SharePoint backups.
So even though DPM can protect a SharePoint farm configuration database, it can’t do anything more with it than you or I can do with a standard SQL Server database restore. If you realize that DPM only works with files and doesn’t have much in the way of application-level intelligence, this chart that compares its capabilities against other SharePoint protection mechanisms makes quite a bit of sense. It should also make it clear why even Microsoft’s products have a need for the Backup-SPConfigurationDatabase cmdlet.
Closing Thoughts
Don’t interpret what I’m saying as DPM 2010-bashing. On the contrary, I’ve been using DPM since it’s 2007 release in my home network environment, and I think it’s a pretty good product. I only brought up DPM to make my point about the Backup-SPConfigurationDatabase cmdlet – not to beat-up the product.
Since both SQL Server backups and DPM are capable of restoring a SharePoint configuration database – but not much more than that – the Backup-SPConfigurationDatabase cmdlet fills a very important role in the SharePoint restore process. It’s the “bridge” from many backup/restore solutions to SharePoint itself for purposes of getting back configuration data.
The general rule of thumb that I give people is this: use Backup-SPFarm if you’re trying to extract configuration data from a live farm, and use Backup-SPConfigurationDatabase if you’re trying to extract configuration data from a restored (and otherwise unassociated) configuration database.
The SharePoint 2010 Disaster Recovery Guide is now available! In this post, I provide a small peek into the contents of the book and the people who helped make it a reality.
Since my first copy of our new book actually arrived in the mail yesterday (from Amazon.com), I think I can officially announce that the SharePoint 2010 Disaster Recovery Guide is available! Here’s a picture of it – straight out of the box:
John Ferringer and I apparently didn’t learn our lesson the first time around. When Cengage approached us about writing another version of the book, we said “yes.” We were either in denial or had repressed the memories associated with writing the first book. There were definitely some difficulties and challenges (like trying to learn the relevant pieces of the SharePoint 2010 platform while also writing about them), but we managed to pull it off again.
Of course, we couldn’t have done this without the technical prowess and patience of JD Wade. JD was our technical editor, and he had a knack for questioning any assumption or statement that wasn’t clearly backed by fact. He did a fantastic job – I couldn’t have been happier. The book’s accuracy and quality are a direct result of his contributions.
What’s Inside?
Interested in what we included? Here’s the table of contents by chapter:
SharePoint Disaster Recovery Planning and Key Concepts
SharePoint Disaster Recovery Design and Implementation
SharePoint Disaster Recovery Testing and Maintenance
SharePoint Disaster Recovery Best Practices
Windows Server 2008 Backup and Restore
Windows Server 2008 High Availability
SQL Server 2008 Backup and Restore
SQL Server 2008 High Availability
SharePoint 2010 Central Administration Backup and Restore
SharePoint 2010 Command Line Backup and Restore: PowerShell
SharePoint 2010 Disaster Recovery Development
SharePoint 2010 Disaster Recovery for End Users
Conclusion
As you can see, we’ve included a little something for just about everyone who might work with SharePoint or interface with it for disaster recovery purposes. SharePoint administrators will probably benefit the most from the book, but there are definitely sections that are of use to SharePoint developers, DR planners, and others who are interested in SharePoint from a business continuity perspective.
If you happen to pick up a copy of the book, please share your feedback with us – good, bad, ugly, or anything else you feel like sending our way! We poured a lot of time and effort into this book in an attempt to “do our part” for the community, and your thoughts and feedback mean everything to us.
In this post, I discuss SharePoint 2010’s new configuration-only backup and restore capabilities, how they work, and why they probably aren’t going to remove the need for farm configuration documentation anytime soon.
Since our SharePoint 2010 Disaster Recovery Guide is written, starched, pressed, and ready to wear, I thought it was time to get back to some of the blogging I promised to start doing again once the book was finished. I guess that if I didn’t have something to write, I simply wouldn’t know what to do with myself. <insert smirk here>
Motivation For This Post
SharePoint 2010’s configuration-only backup and restore capabilities are on a long list of topics I’ve been meaning to blog about, but in all honesty it wasn’t at the top of that list. I’ve been seeing the topic start to get some real attention in a number of forums, though, from folks like Todd Klindt (in one of his recent netcasts) and Benjamin Athawes (in his blog and in the helpful replies he’s been providing out in Microsoft’s TechNet forums).
It seems that many folks in the SharePoint community have heard about configuration-only backup and restore, and I think there’s an awful lot of hope that it will help with some of the problems we faced with SharePoint 2007. By the time you finish reading this post, I hope to impart a solid understanding of what configuration-only backup and restore will – and won’t – do for you.
The Elephant In The Room
Before I go any further, let me address the question that I suspect the overwhelming majority of you probably want an answer to:
Will configuration-only backup and restore let me clone my SharePoint 2010 farm?
The quick answer: no. At the risk of being a bit flippant, I’ll include a slightly longer answer: heck no – not even close.
When configuration-only backup and restore was introduced to the world, it promised so much. I remember hearing the discussion of “farm templates” and of “cloning configuration.” I remember sitting through Bill Baer’s business continuity management (BCM) session at the SharePoint Conference in 2009 and thinking about all the things I was going to do with the new capability.
In light of what I now know about configuration-only backup and restore, I went back to the recorded SPC sessions (including SPC311 – Bill’s BCM session) to make sure I wasn’t hearing things. I wasn’t. My guess is that the initial vision for configuration-only backup and restore had to get scaled-back prior to the product becoming generally available. Maybe the team ran out of time, maybe they hit technical hurdles, or perhaps it was a combination of the two. Regardless, the capability in its current form isn’t quite what I had hoped it would be.
Enough with the hand-waving. Let’s dive in.
High-Level: What Is Configuration-Only Backup and Restore?
For a brief primer on configuration-only backup and restore, check out the “Backup and recovery overview (SharePoint 2010)” article on TechNet. If you don’t want to take the time to read the article, though, I’ll sum it up for you: a configuration-only backup and restore allows you to extract portable configuration settings from a SharePoint 2010 farm configuration database and apply those settings to a different farm. The promise, as indicated earlier, is that you could effectively “clone” the configuration of a farm. The configuration template that would be generated from this process could then be applied to other farms to create copies of the original farm’s settings and configuration. This would be extremely beneficial when duplicating environments (e.g., creating staging and testing environments that match a production environment), building development and demo virtual machines (VMs), and more.
Those of you who have worked with SharePoint 2007 recognize the leap forward that this represents. Anyone who has spent any amount of time exploring SharePoint backup and recovery knows that farm configuration databases are tied to their SharePoint environments. Microsoft doesn’t support transplanting one farm’s configuration database into another farm; most of the time, it simply wouldn’t work. Even if you could get it to work through some extremely impressive techno-jujitsu, you’d be in a horribly unsupported state as far as Microsoft support was concerned.
What Does It Look Like?
Configuration-only backup and restore in SharePoint 2010 is an extension to the existing catastrophic backup and restore capabilities located in the Microsoft.SharePoint.Administration and Microsoft.SharePoint.Administration.Backup namespaces. The processes and mechanisms that allow you to create farm-level backups from Central Administration (through “Farm Backup and Restore”), PowerShell (via Backup-SPFarm), and STSADM.exe (via STSADM –o backup in catastrophic mode) are the same ones that are employed in configuration-only backups.
In fact, the backup sets that are generated from a configuration-only backup are basically the same, structurally speaking, as those that are generated from a “normal” (content + configuration) catastrophic backup. One easy way to determine the nature of a backup, though, is to crack open the backup location’s table of contents file (spbrtoc.xml) and examine the value within the <SPConfigurationOnly /> element for a given backup or restore run (represented by a <SPHistoryObject /> element).
For example, this particular backup run was clearly a configuration-only backup because its <SPConfigurationOnly /> element contains a value of True. [sourcecode language=”xml” highlight=”9″]<SPHistoryObject>
<SPId>571d2ad2-f485-46de-918e-653e8868c8bc</SPId>
<SPRequestedBy>SPDC\s0ladmin</SPRequestedBy>
<SPBackupMethod>Full</SPBackupMethod>
<SPRestoreMethod>None</SPRestoreMethod>
<SPStartTime>08/18/2010 16:15:12</SPStartTime>
<SPFinishTime>08/18/2010 16:15:37</SPFinishTime>
<SPIsBackup>True</SPIsBackup>
<SPConfigurationOnly>True</SPConfigurationOnly>
<SPBackupDirectory>e:\temp\spbr0001\</SPBackupDirectory>
<SPDirectoryName>spbr0001</SPDirectoryName>
<SPDirectoryNumber>1</SPDirectoryNumber>
<SPTopComponent>Farm</SPTopComponent>
<SPTopComponentId>7850df11-60ef-460c-ab4a-9b7b9f2f735f</SPTopComponentId>
<SPWarningCount>0</SPWarningCount>
<SPErrorCount>0</SPErrorCount>
</SPHistoryObject>[/sourcecode] If you browse the folder containing the backup set that is generated from a configuration-only backup, you’ll see the expected array of sequentially numbered hexadecimal .bak files, as well as a log file (spbackup.log) and backup component hierarchy file (spbackup.xml).
The .bak files themselves contain XML-serialized representations of various farm objects that were captured during the configuration backup process:
Again, this is all very similar to a standard catastrophic farm backup. The one notable absence in the backup set that is produced during a configuration-only backup is that of SQL Server database backup files that begin (internally) with a telltale TAPE header. The absence of these files is expected, though, since configuration-only backups operate on farm configuration settings and metadata – not the content and other data that is housed primarily in SQL Server databases.
“Wait,” you might be saying, “service applications typically have quite a bit of configuration data, and much of that data is housed in SQL Server databases. Wouldn’t those databases be captured by the configuration-only backup process?” Hold that question – I’ll be addressing it in a short bit.
A Quick Peek At What’s Going On Under The Hood
To better understand how configuration-only backup and restore works, it helps to dive below the backup set and into the SharePoint object model to see what’s actually happening. If you’re not a developer, no worries – I’ll try to keep this simple.
The type that is the backbone of configuration-only backup and restore operations is the IBackupRestoreConfiguration interface. Classes in the SharePoint object model can implement this interface (and supply a CanBackupRestoreAsConfiguration property value of true) if they wish to meet the bare minimum requirements for inclusion in configuration-only backup and restore operations.
If you’ve worked with catastrophic backup and restore in the SharePoint object model before, this interface name may seem a little familiar to you – even if it isn’t. That’s because extending the native catastrophic backup and restore functionality of SharePoint to include new content classes is done through the similarly named IBackupRestore interface. IBackupRestore came before IBackupRestoreConfiguration, and the latter is actually derived from the former. The patterns of interaction between the runtime backup objects and objects that implement these two interfaces is very similar – as you might expect given their inheritance relationship.
So you might be wondering, “So what? I don’t plan to build configuration-only backup and restore-capable components. Why are you going through all of this.” The answer to that question is relatively easy to answer: we can get a pretty clear understanding of what is actually included in configuration-only backup and restore operations by looking at the SharePoint classes that implement the IBackupRestoreConfiguration interface.
Hold onto the concept of examining types that implement IBackupRestoreConfiguration; we’ll be coming back to it in just a second.
What Does A Configuration-Only Backup Actually Capture? – Part 1
Let’s leave the SharePoint object model and come back up to ground level for a moment.
In plain English, configuration-only backup and restore is basically supposed to address the “I need to create a template of my farm” pain point we felt with SharePoint 2007. Does it? What gap is filled by the capability according to Microsoft?
If you read the TechNet article I linked to earlier, you’ll find just five types of settings (or configuration data items) that are actually listed as included in a configuration-only backup:
Antivirus
Information rights management (IRM)
Outbound e-mail settings (only restored when performing an "overwrite").
Customizations deployed as trusted solutions
Diagnostic logging
I don’t know about you, but this doesn’t exactly line up too well with the list of things I’d want to replicate from Farm A to Farm B if I were actually trying to clone Farm A configuration settings. Don’t get me wrong: several of the items listed are things I would want to bring across (especially the customizations in the farm solution store), but there are a whole host of additional things I’d want to see.
What Does A Configuration-Only Backup Actually Capture? – Part 2
The five bullet points I just supplied aren’t entirely well-defined, and they’re more than a little “light” in terms of farm configuration data. Let’s define the list a bit more clearly by seeing which classes in the SharePoint object model actually implement the required IBackupRestoreConfiguration interface.
When I fire-up Reflector and analyze the types that use the IBackupRestoreConfiguration interface, I come up with the following classes (ignoring the SPBackupRestore type, since its ImplementsIBackupRestoreConfiguration method only checks to see whether or not other objects themselves actually implement the interface):
Each of these classes is capable of participating in a configuration-only backup because it implements IBackupRestoreConfiguration. The list is longer than the five bullets I mentioned earlier, but many of the classes cited can be grouped into common areas of functionality. The SPSolution, SPSolutionCollection, and SPSolutionLanguagePack types are associated with trusted solutions (the farm solution store), for example, while the SPDiagnosticsServiceBase type is tied to trace log and event throttling management (i.e., diagnostic logging). A simple one-to-one mapping between classes and settings areas (that you might find in Central Administration) doesn’t actually exist.
Identifying what is included in a configuration-only backup isn’t quite a quick and easy affair.
What Doesn’t A Configuration-Only Backup Capture?
Sometimes it’s simply easier to talk about what a thing isn’t rather than what it is. As you’re probably coming to see, configuration-only backup and restore is one of those things.
For those who hoped that configuration-only backup and restore would deliver us to the promised land of SharePoint farm templates and full configuration replication, the first signs of trouble in paradise come by reading the implementation notes for the IBackupRestoreConfiguration interface. In essence they state that you shouldn’t be implementing the interface to capture configuration settings unless the following three conditions are true for the settings in question:
The settings you’re trying to preserve are only configuration settings – not content like lists, documents, etc.
The settings you want to capture are scoped to the entire farm or the Content Publishing Web Service (i.e., they apply equally to all non-Central Admin Web applications and the site collections contained within them – not to just a subset)
The settings aren’t tied to server names or your specific SharePoint farm topology
That list starts “simple” and ends “rough.” With those three bullets, we can instantly rule-out configuration data that is tied to individual Web applications, content databases, site collections, and everything else below them. Configuration-only backup and restore won’t protect your per-Web application settings, either, including alternate access mappings (AAMs).
I’m making a special point of highlighting AAMs because configuration-only backup and restore was initially advertised as being capable of capturing these mappings. Sure, you can view AAMs within Central Administration and may think that they’re maintained at the farm level, but they aren’t – they’re tied to specific Web applications. AAMs for a Web application are represented (within the object model) as an instance of the SPAlternateUrlCollection class. The SPAlternateUrlCollection isn’t on the list of IBackupRestoreConfiguration implementers provided earlier, nor are its parent types (most notably the SPWebApplication type through its AlternateUrls property). Net effect: it isn’t included in configuration-only backup and restore operations.
Since cloning a SharePoint farm usually involves taking it from one environment to another, bullet #3 is a rather big sticking point, as well. Configuration-only backup and restore won’t handle anything that includes a server name, IP address, or any other environmentally-dependent setting. The reason is pretty simple – how would SharePoint know how to actually re-wire that stuff (in a new environment) on restore?
Ouch.
Okay, What About Service Applications?
The Service Application Framework is new to SharePoint 2010, and it represents a major step forward in correcting many of the performance, configuration, and scalability limits of MOSS 2007’s shared service provider (SSP) model. If you’ve touched SharePoint 2010 in any form, chances are you’ve at least stumbled into service applications in some form. Examples include the Managed Metadata Service, Business Data Connectivity (BCS) Services, and Search.
Although the Service Application Framework has been engineered to participate in normal (content+configuration) catastrophic backup and restore operations, it doesn’t do so through the standard IBackupRestore interface. Developers of service application and related classes can adorn their classes with a couple of different attributes (IisWebServiceApplicationBackupBehaviorAttribute and IIsWebServiceApplicationProxyBackupBehaviorAttribute – not exactly “short and sweet” in the name department), and they get backup and restore integration as a freebie. This is a big relief for developers, because properly implementing the IBackupRestore interface in their classes is anything but trivial.
There is a downside to the attribute-based backup and restore approach as its implemented, though: the Service Application Framework simply doesn’t participate in configuration-only backup and restore. When you execute a configuration-only backup, you won’t capture any configuration data tied to search, BCS, managed metadata, web analytics, Excel services, or any of the other service applications.
Double ouch.
The Verdict On Configuration-Only Backup And Restore
I’ll start by apologizing if this post dashed your hopes. Believe me when I say that I had very high hopes for configuration-only backup and restore, as well. Cloning farms by hand is painful work; I’ve done it enough times to know that much.
Since configuration-only backup and restore doesn’t actually cover any configuration data tied to service applications and individual Web applications, cloning a farm in SharePoint 2010 is still going to be a largely manual affair. Scripting can (and probably should) play a large role, and so will documentation.
There, I said it – the ugly “d” word. Documentation.
Documentation continues to play a big role in capturing configuration data in SharePoint 2010, but that doesn’t mean you have to resort to taking notes or capturing screenshots en masse.
Microsoft has (indirectly) acknowledged that configuration-only backup and restore isn’t going to round up all of our desired configuration settings, and they’ve attempted to lend us a hand through some PowerShell scripting. If you haven’t yet reviewed Microsoft’s farm documentation script on TechNet, I highly recommend that you check it out. Saying that the script’s treatment of farm configuration data is “extensive” is kind of like saying that a tsunami is a “big wave” – it doesn’t do it justice.
I also want to be clear and say that despite the limitations I’ve described, I still think that configuration-only backup and restore is worth some serious investigation for anyone trying to do template creation, cloning, and disaster recovery work. Given my focus on disaster recovery, for example, the ability to get a farm’s solution store backed-up in a form that can be restored easily at a later time is a huge benefit – one that would really ease the process of farm recovery in a true disaster scenario.