<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Lessons Learned</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/schnood/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/schnood/feed.xml</link>
    <description>Various postings based on things I learned the hard way.</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:33:36 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Reconfigure FAST for SharePoint 2010 server farm without resetting Index</title>
      <link>https://docs.microsoft.com/archive/blogs/schnood/reconfigure-fast-for-sharepoint-2010-server-farm-without-resetting-index</link>
      <pubDate>Tue, 21 Feb 2012 15:16:00 GMT</pubDate>
      <dc:creator><![CDATA[Schnood]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/schnood/2012/02/21/reconfigure-fast-for-sharepoint-2010-server-farm-without-resetting-index/</guid>
      <description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; We recently expanded our FAST for SharePoint 2010 farm to...]]></description>
      <content:encoded><![CDATA[<div class="WordSection1">
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; We recently expanded our FAST for SharePoint 2010 farm to include a second failover location. As it had been nearly a year since we rolled out our primary farm it was a good chance to validate our deployment documentation and to validate we could quickly and easily build our farm from scratch. All went well until the end in which we were validating the deployment of the FAST instance. It was discovered that the configuration of our FAST servers was incorrect. Unfortunately, this was discovered after we had spent several days completing the crawl of all our content. What the mistake was to assign the Query role to the wrong row of servers. Fortunately, it was possible to reconfigure the FAST servers without resetting or <span class="GramE">re-crawling</span> our content by modifying the deployment.xml and running the Set-FASTSearchConfiguration PowerShell command.&nbsp;</p>
<p>&nbsp;</p>
</div>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal"><b style="mso-bidi-font-weight: normal;"><span style="font-size: medium;">Environment detail:</span><o:p></o:p></b></p>
<p style="mso-add-space: auto; mso-list: l1 level1 lfo3;" class="style1"><span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri;"> <span style="mso-list: Ignore;">&bull;<span style="font: 7pt 'Times New Roman';"> </span></span></span>Windows 2008 R2 SP1 (KB976932)<o:p></o:p></p>
<p style="mso-add-space: auto; mso-list: l1 level1 lfo3;" class="style1"><span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri;"> <span style="mso-list: Ignore;">&bull;<span style="font: 7pt 'Times New Roman';"> </span></span></span>SharePoint 2010 SP1 w/June 2011 CU<o:p></o:p></p>
<p style="mso-add-space: auto; mso-list: l1 level1 lfo3;" class="style1"><span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri;"> <span style="mso-list: Ignore;">&bull;<span style="font: 7pt 'Times New Roman';"> </span></span></span>FAST for SharePoint 2010 SP1 w/June CU</p>
<p style="padding-left: 30px; mso-list: l1 level3 lfo3; mso-add-space: auto;" class="style2"><span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings;"> <span style="mso-list: Ignore;">&sect;<span style="font: 7pt 'Times New Roman';"> </span></span></span>5 Rows</p>
<p style="padding-left: 30px; mso-list: l1 level3 lfo3; mso-add-space: auto;" class="style3"><span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings;"> <span style="mso-list: Ignore;">&sect;<span style="font: 7pt 'Times New Roman';"> </span></span></span>4 Columns<o:p></o:p></p>
<p class="MsoNormal"><br />&nbsp;</p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal"><b style="mso-bidi-font-weight: normal;"><span style="font-size: medium;">Server role changes:</span></b></p>
<ol>
<li>
<div class="MsoNormal"><span style="font-size: small;"><b style="mso-bidi-font-weight: normal;">Remove the first row from serving queries. </b></span></div>
</li>
<li>
<div class="MsoNormal"><span style="font-size: small;"><b style="mso-bidi-font-weight: normal;">Add the&nbsp;abilty for the&nbsp;second row to perform indexing.</b></span></div>
</li>
</ol>
<table style="border: currentColor; border-collapse: collapse; mso-border-alt: solid #A3A3A3 1.0pt; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 0in 0in 0in;" class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="padding: 4pt; border: 1pt solid #a3a3a3; width: 261pt;" valign="top" width="348">
<p class="MsoNormal"><b> <span style="color: #1f497d; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri;"> Current Deployment Xml </span></b><span style="color: #1f497d; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri;"><o:p></o:p> </span></p>
</td>
<td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: #a3a3a3 #a3a3a3 #a3a3a3 currentColor; padding: 4pt; width: 281.1pt; mso-border-left-alt: solid #A3A3A3 1.0pt;" valign="top" width="375">
<p class="MsoNormal"><b> <span style="color: #1f497d; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri;"> Proposal</span></b><span style="color: #1f497d; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri;"><o:p></o:p></span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1; mso-yfti-lastrow: yes;">
<td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: currentColor #a3a3a3 #a3a3a3; padding: 4pt; width: 261pt; mso-border-top-alt: solid #A3A3A3 1.0pt;" valign="top" width="348">
<p class="MsoNormal"><br /><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/87/80/3005.CurrentDep.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-80/3005.CurrentDep.jpg"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/87/80/3005.CurrentDep.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-80/3005.CurrentDep.jpg" width="274" height="89" /></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/87/80/3630.CurrentDep.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-80/3630.CurrentDep.jpg"></a></p>
<p class="MsoNormal"></p>
</td>
<td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: currentColor #a3a3a3 #a3a3a3 currentColor; padding: 4pt; width: 281.1pt; mso-border-left-alt: solid #A3A3A3 1.0pt; mso-border-top-alt: solid #A3A3A3 1.0pt;" valign="top" width="375">
<p class="MsoNormal"><br /><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/87/80/6443.proposedDep.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-80/6443.proposedDep.jpg"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/87/80/6443.proposedDep.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-87-80/6443.proposedDep.jpg" width="276" height="94" /></a></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal"><br />&nbsp;</p>
<p class="MsoNormal"><b style="mso-bidi-font-weight: normal;"><span style="font-size: medium;">Steps to Reconfigure:</span><o:p></o:p></b></p>
<p style="mso-add-space: auto; mso-list: l0 level1 lfo4;" class="style1"><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"> <span style="mso-list: Ignore;">1.<span style="font: 7pt 'Times New Roman';"> </span></span></span>Synchronize the primary and the backup indexer servers</p>
<p style="padding-left: 30px; mso-add-space: auto;" class="style4"><a href="https://technet.microsoft.com/en-us/library/gg482028.aspx"> https://technet.microsoft.com/en-us/library/gg482028.aspx</a><o:p></o:p></p>
<p class="MsoNormal"></p>
<p style="mso-add-space: auto; mso-list: l0 level1 lfo4;" class="style1"><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"> <span style="mso-list: Ignore;">2.<span style="font: 7pt 'Times New Roman';"> </span></span></span>Reconfigure the farm deployment without adding new server.</p>
<p style="padding-left: 30px; mso-add-space: auto;" class="style4"><a href="https://technet.microsoft.com/en-us/library/ff381247.aspx#BKMK_ReconfigureTheDeploymentWithoutAddingNewServers"> https://technet.microsoft.com/en-us/library/ff381247.aspx#BKMK_ReconfigureTheDeploymentWithoutAddingNewServers</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Simple Sharepoint 2010 farm backup</title>
      <link>https://docs.microsoft.com/archive/blogs/schnood/simple-sharepoint-2010-farm-backup</link>
      <pubDate>Tue, 19 Apr 2011 15:20:00 GMT</pubDate>
      <dc:creator><![CDATA[Schnood]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/schnood/2011/04/19/simple-sharepoint-2010-farm-backup/</guid>
      <description><![CDATA[Problem:
I recently setup a new SharePoint environment to host a single site collection....]]></description>
      <content:encoded><![CDATA[<p>
<meta content="en-us" />

</p>
<p class="auto-style3"><strong>Problem:</strong></p>
<p class="auto-style1">I recently setup a new SharePoint environment to host a single site collection. Even though there was not a lot of content on this small farm, the environment needed to be highly available and we needed the ability to lose no more than one hour worth of data in the case of a catastrophic failure. Retaining backups for one week was plenty for our needs. Users of the site were located globally making the site's least utilized time in the evenings (PST) with the biggest window on Saturday. </p>
<p class="auto-style1">Based on this and the idea of keeping the process easy and lightweight as possible (i.e. out-of-the-SharePoint-box and running from a single location) I decided to go this route:</p>
<ol>
<li class="auto-style1">Full farm backup on Saturday afternoon</li>
<li class="auto-style1">Differential farm backup on Sunday-Friday evenings</li>
<li class="auto-style1">Hourly differential backups on content databases</li>
<li class="auto-style1">Clean out last weeks Full and Differential backups on early Monday morning</li>
</ol>
<p class="auto-style1">Problem was I didn't know how I was going to accomplish this and than fully automate it. Breaking down this problem I determined I had three steps to make this work:</p>
<ol>
<li class="auto-style1">Run backups via PowerShell </li>
<li class="auto-style1">Run these PowerShell scripts from Task Scheduler</li>
<li class="auto-style1">Cleanup backups</li>
</ol>
<p class="auto-style1">&nbsp;</p>
<p class="auto-style3"><strong>Solution:</strong></p>
<ol>
<li class="auto-style1"><span class="auto-style1">Run backups via PowerShell</span> 
<ul>
<li class="auto-style1"><span class="auto-style1">Using the<a target="_blank" href="https://technet.microsoft.com/en-us/library/ee428315.aspx"> TechNet documentation</a> for reference I used the following one-liner for Full and Differential farm backup:</span><br class="auto-style1" /><span class="auto-style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="auto-style2"><strong>Backup-SPFarm -Directory &amp;lt;<em>backupFolder</em>&gt; -BackupMethod {Full | Differential} [-Verbose]<br /></strong></span><br class="auto-style1" /></li>
<li class="auto-style1"><span class="auto-style1">This is what I used for the hourly content db backups:</span><br class="auto-style1" /><span class="auto-style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="auto-style2"><strong>Backup-SPFarm -Directory &amp;lt;<em>backupFolder</em>&gt; -BackupMethod Differential -Item &amp;lt;<em>contentDBName</em>&gt;</strong></span><br class="auto-style1" /><br class="auto-style1" /></li>
<li class="auto-style1"><span class="auto-style1">I took these commands and placed them into individual .ps1 files (FullFarmBackup.ps1, DiffFarmBackup.ps1 and HourlyContentDBBackup.ps1) and put them into E:\backupScripts.<br /></span><br class="auto-style1" /></li>
</ul>
</li>
<li class="auto-style1"><span class="auto-style1">Run these PowerShell backups from Task Scheduler</span><br class="auto-style1" /><span class="auto-style1">&nbsp;&nbsp;&nbsp; Getting Task Scheduler to run a PowerShell script with the SharePoint snap-in was a lesson in trial and error. Ultimately this is what I did to get it working.</span> 
<ul>
<li><span class="auto-style1">In all my .ps1 scripts I need to have the SharePoint snap-in loaded. To do this I added the live "Add-PSSnapin Microsoft.SharePoint.PowerShell" at the top.<br /></span><br class="auto-style1" /><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; Add-PSSnapin Microsoft.SharePoint.PowerShell </strong></span><strong><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; Backup-SPFarm -Directory &amp;lt;backupFolder&gt; -BackupMethod {Full | Differential} [-Verbose]<br /></strong></span></li>
<li><span class="auto-style1">Under the Action tab of the task I created:</span> 
<ul>
<li class="auto-style1">Program/Script = powershell</li>
<li><span class="auto-style1">Add Argument (optional) = E:\backupScripts\FullFarmBackup.ps1<br /><br /><img height="413" width="375" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/87/80/3527.scheduledTask.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-87-80/3527.scheduledTask.jpg" border="0" /><br /></span><br class="auto-style1" /></li>
</ul>
</li>
</ul>
</li>
<li class="auto-style1"><span class="auto-style1">Automate the cleanup of the above backups</span><br class="auto-style1" /><span class="auto-style1">&nbsp;&nbsp;&nbsp; </span><br class="auto-style1" /><span class="auto-style1">Because I didn't have infinite disk space and didn't need backups greater than 1 week I needed a means to cleanup old backups. Running a quick Bing search I ran across a blog post on <a target="_blank" href="https://imperfectit.blogspot.com/2010/03/automate-sharepoint-2010-farm-backups.html">'Imperfect IT'</a> that did just this. Here is a copy of what was posted on that site and to which I placed into Task Scheduler:</span><br class="auto-style1" /><br class="auto-style1" /><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; # Location of spbrtoc.xml</strong></span><strong><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; $spbrtoc = "&amp;lt;<em>backupFolder</em>&gt;" </strong></span><strong><br class="auto-style2" /><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; # Days of backup that will be remaining after backup cleanup.</strong></span><strong><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; $days = 7 </strong></span><strong><br class="auto-style2" /><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; # Import the Sharepoint backup report xml file</strong></span><strong><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; [xml]$sp = gc $spbrtoc </strong></span><strong><br class="auto-style2" /><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; # Find the old backups in spbrtoc.xml</strong></span><strong><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; $old = $sp.SPBackupRestoreHistory.SPHistoryObject |</strong></span><strong><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; ? { $_.SPStartTime -lt ((get-date).adddays(-$days)) }</strong></span><strong><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; if ($old -eq $Null) { write-host "No reports of backups older than $days days found in spbrtoc.xml.'nspbrtoc.xml isn't changed and no files are removed.'n" ; break} </strong></span><strong><br class="auto-style2" /><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; # Delete the old backups from the Sharepoint backup report xml file</strong></span><strong><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; $old | % { $sp.SPBackupRestoreHistory.RemoveChild($_) } </strong></span><strong><br class="auto-style2" /><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; # Delete the physical folders in which the old backups were located</strong></span><strong><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; $old | % { Remove-Item $_.SPBackupDirectory -Recurse } </strong></span><strong><br class="auto-style2" /><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; # Save the new Sharepoint backup report xml file</strong></span><strong><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; $sp.Save($spbrtoc)</strong></span><strong><br class="auto-style2" /></strong><span class="auto-style2"><strong>&nbsp;&nbsp;&nbsp; Write-host "Backup(s) entries older than $days days are removed from spbrtoc.xml and harddisc."</strong></span><br class="auto-style1" /></li>
</ol>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:'Arial','sans-serif';
mso-fareast-font-family:'Times New Roman';color:black">I now have 4 scheduled tasks running (Full farm, Diff farm, Hourly content db and cleanup) that provide me the ability to fulfill our simple backup strategy. </span><span style="font-size:12.0pt;font-family:'Times New Roman','serif';mso-fareast-font-family:
'Times New Roman';color:black"><o:p></o:p></span></p>
<p class="auto-style1">&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>No Access Database Service is available in the farm</title>
      <link>https://docs.microsoft.com/archive/blogs/schnood/no-access-database-service-is-available-in-the-farm</link>
      <pubDate>Tue, 29 Mar 2011 15:09:00 GMT</pubDate>
      <dc:creator><![CDATA[Schnood]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/schnood/2011/03/29/no-access-database-service-is-available-in-the-farm/</guid>
      <description><![CDATA[I recently installed a new SharePoint 2010 farm to check out some new site templates that I had not...]]></description>
      <content:encoded><![CDATA[<p>I recently installed a new SharePoint 2010 farm to check out some new site templates that I had not yet used. When creating a new Asset Library Web Database I ran into the following error.</p>
<p><strong>Problem:</strong><br />&nbsp;&nbsp;&nbsp; "No Access Database Service is available in the farm."</p>
<p><strong>Cause:</strong><br />&nbsp;&nbsp;&nbsp; Asset Library Web Database uses the Access Database Service which was not running by default.</p>
<p><strong>Resolution:<br /></strong>&nbsp;&nbsp;&nbsp; 1.&nbsp;Go to Central Administration Page<br />&nbsp;&nbsp;&nbsp; 2.&nbsp;Select Application Management<br />&nbsp;&nbsp;&nbsp; 3.&nbsp;Under Service Applications select &lsquo;Manage services on server&rsquo;<br />&nbsp;&nbsp;&nbsp; 4.&nbsp;First item listed is Access Database Service &ndash; start this service</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/87/80/1881.AccessDatabaseService.JPG" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-87-80/1881.AccessDatabaseService.JPG" border="0" /></p>]]></content:encoded>
    </item>
  </channel>
</rss>