<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Allen Wang's SharePoint Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/allenwang/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/allenwang/feed.xml</link>
    <description>SharePoint Unplugged</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:13:03 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>SharePoint 2013 Resources</title>
      <link>https://docs.microsoft.com/archive/blogs/allenwang/sharepoint-2013-resources</link>
      <pubDate>Mon, 02 Dec 2013 15:48:22 GMT</pubDate>
      <dc:creator><![CDATA[AllenWang]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/allenwang/2013/12/02/sharepoint-2013-resources/</guid>
      <description><![CDATA[SharePoint 2013 Composed Looks &ndash; Getting a Preview Picture to...]]></description>
      <content:encoded><![CDATA[<p>SharePoint 2013 Composed Looks &ndash; Getting a Preview Picture to Work</p>
<p><a href="http://www.lifeonplanetgroove.com/sharepoint-2013-composed-looks-getting-a-preview-picture-to-work/">http://www.lifeonplanetgroove.com/sharepoint-2013-composed-looks-getting-a-preview-picture-to-work/</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>SharePoint 2010 Search File Type – Include or Exclude?</title>
      <link>https://docs.microsoft.com/archive/blogs/allenwang/sharepoint-2010-search-file-type-include-or-exclude</link>
      <pubDate>Mon, 18 Feb 2013 05:34:00 GMT</pubDate>
      <dc:creator><![CDATA[AllenWang]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/allenwang/2013/02/18/sharepoint-2010-search-file-type-include-or-exclude/</guid>
      <description><![CDATA[This is an old topic, but definitely worth mentioning. The &ldquo;File Types&rdquo; page of search...]]></description>
      <content:encoded><![CDATA[<p>This is an old topic, but definitely worth mentioning. The &ldquo;File Types&rdquo; page of search service application has very different meaning for FAST Search Connector and FAST Search Query (or SharePoint Enterprise Search).</p>
<p>&nbsp;</p>
<p>In <strong>FAST Search Connector</strong>, you add the file types that you do not want to be included in the index.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/metablogapi/6835.FASTQueryFileTypes_61442A54.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13-metablogapi/6835.FASTQueryFileTypes_5F00_61442A54.jpg"><img style="display: inline; background-image: none;" title="FASTQueryFileTypes" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/metablogapi/5355.FASTQueryFileTypes_thumb_70978C63.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13-metablogapi/5355.FASTQueryFileTypes_5F00_thumb_5F00_70978C63.jpg" alt="FASTQueryFileTypes" width="814" height="349" border="0" /></a></p>
<p>&nbsp;</p>
<p>In <strong>FAST Search Query (or SharePoint Enterprise Search)</strong>, you add the files types that you do want to include in the index.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/metablogapi/4760.FASTConnectorFileTypes_6E0E5AA5.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13-metablogapi/4760.FASTConnectorFileTypes_5F00_6E0E5AA5.jpg"><img style="display: inline; background-image: none;" title="FASTConnectorFileTypes" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/metablogapi/0574.FASTConnectorFileTypes_thumb_7238326A.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13-metablogapi/0574.FASTConnectorFileTypes_5F00_thumb_5F00_7238326A.jpg" alt="FASTConnectorFileTypes" width="814" height="369" border="0" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>Install-SPApplicationContent does not parse XML comment in webconfig xml</title>
      <link>https://docs.microsoft.com/archive/blogs/allenwang/install-spapplicationcontent-does-not-parse-xml-comment-in-webconfig-xml</link>
      <pubDate>Wed, 28 Nov 2012 05:46:09 GMT</pubDate>
      <dc:creator><![CDATA[AllenWang]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/allenwang/2012/11/28/install-spapplicationcontent-does-not-parse-xml-comment-in-webconfig-xml/</guid>
      <description><![CDATA[If you use custom webconfig files under 14/CONFIG folder to modify web application’s web.config...]]></description>
      <content:encoded><![CDATA[<p>If you use custom webconfig files under 14/CONFIG folder to modify web application’s web.config file, then pay attention not to include any XML comment &lt;!-- --&gt; in the xml files. </p>  <p><font face="Consolas"><font face="Segoe UI">Neither </font><strong>Install-SPApplicationContent</strong></font> nor <font face="Consolas"><strong>STSADM –o copyappbincontent</strong></font> parse xml comments. </p>  <p>&#160;</p>  <p>For example:</p>  <p>in 14/CONFIG/webconfig.custom.xml,&#160;&#160; </p>  <div style="margin: 20px 0px 10px; padding: 4px; border: 1px solid silver; width: 97.5%; text-align: left; line-height: 12pt; overflow: auto; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; cursor: text; direction: ltr; max-height: 200px; background-color: rgb(244, 244, 244);" id="codeSnippetWrapper">   <div style="padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);" id="codeSnippet">     <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span style="color: rgb(96, 96, 96);" id="lnum1">   1:</span> &lt;?xml version=<span style="color: rgb(0, 96, 128);">&quot;1.0&quot;</span> encoding=<span style="color: rgb(0, 96, 128);">&quot;utf-8&quot;</span>?&gt;</pre>
<!--CRLF-->

    <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span style="color: rgb(96, 96, 96);" id="lnum2">   2:</span> &lt;actions&gt;</pre>
<!--CRLF-->

    <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span style="color: rgb(96, 96, 96);" id="lnum3">   3:</span>   &lt;remove path=<span style="color: rgb(0, 96, 128);">&quot;configuration/appSettings/add[@key='Security.ServiceAccount']&quot;</span> /&gt;</pre>
<!--CRLF-->

    <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span style="color: rgb(96, 96, 96);" id="lnum4">   4:</span>&#160; </pre>
<!--CRLF-->

    <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span style="color: rgb(96, 96, 96);" id="lnum5">   5:</span>   &lt;!-- XML COMMENT CANNOT BE PARSED --&gt;</pre>
<!--CRLF-->

    <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span style="color: rgb(96, 96, 96);" id="lnum6">   6:</span>   </pre>
<!--CRLF-->

    <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span style="color: rgb(96, 96, 96);" id="lnum7">   7:</span>   &lt;add path=<span style="color: rgb(0, 96, 128);">&quot;configuration/appSettings&quot;</span>&gt;</pre>
<!--CRLF-->

    <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span style="color: rgb(96, 96, 96);" id="lnum8">   8:</span>     &lt;add key=<span style="color: rgb(0, 96, 128);">&quot;Security.ServiceAccount&quot;</span> <span style="color: rgb(0, 0, 255);">value</span>=<span style="color: rgb(0, 96, 128);">&quot;apac\spadmin&quot;</span> /&gt;</pre>
<!--CRLF-->

    <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span style="color: rgb(96, 96, 96);" id="lnum9">   9:</span>   &lt;/add&gt;</pre>
<!--CRLF-->

    <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span style="color: rgb(96, 96, 96);" id="lnum10">  10:</span> &lt;/actions&gt;</pre>
<!--CRLF--></div>
</div>


<p>&#160;</p>

<p>Now if you run STSADM –o copyappbincontent, you would get the following error:</p>

<p><font face="Consolas"><strong>Object reference not set to an instance of an object.</strong></font></p>

<p>&#160;</p>

<p>If you run Install-SPApplicationContent, you would get the following erro:</p>

<p><font face="Consolas"><strong>Install-SPApplicationContent : Object reference not set to an instance of an ob
      <br />ject. 

      <br />At line:1 char:29 

      <br />+ Install-SPApplicationContent &lt;&lt;&lt;&lt; 

      <br />&#160;&#160;&#160; + CategoryInfo&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; : InvalidData: (Microsoft.Share...licationContent: 

      <br />&#160;&#160; SPCmdletInstallSPApplicationContent) [Install-SPApplicationContent], NullR

      <br />&#160; eferenceException

      <br />&#160;&#160;&#160; + FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdletInstallS

      <br />&#160;&#160; PApplicationContent</strong></font></p>

<p>&#160;</p>

<p>Remove the xml comment at line 5 in 14/CONFIG/webconfig.custom.xml will resolve this error.</p>]]></content:encoded>
    </item>
    <item>
      <title>Modify Web.config File Dynamically in SharePoint 2010</title>
      <link>https://docs.microsoft.com/archive/blogs/allenwang/modify-web-config-file-dynamically-in-sharepoint-2010</link>
      <pubDate>Sun, 20 May 2012 22:47:11 GMT</pubDate>
      <dc:creator><![CDATA[AllenWang]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/allenwang/2012/05/20/modify-web-config-file-dynamically-in-sharepoint-2010/</guid>
      <description><![CDATA[Recently I was asked to modify a custom solution downloaded from CodePlex to allow it to updated...]]></description>
      <content:encoded><![CDATA[<p>Recently I was asked to modify a custom solution downloaded from CodePlex to allow it to updated web.config file programmatically. The deployment steps provided from CodePlex involve manual modification to web.config files on all WFE servers across the farm which is not a best practice approach for deploying custom solutions.</p>  <p>There are many other articles and posts discussing the same topic, however many people had the same issue that I was facing;</p>  <p>- It adds multiple entries into web.config file where it should only add one single entry.</p>  <p>- It does not delete entries from web.config file.</p>  <p>I’d just want to share my complete code for people who would like to get more idea on how this is done in SharePoint.</p>  <p>The requirement was to add the following line into &lt;configuration&gt;&lt;system.web&gt;&lt;compilation&gt;&lt;assemblies&gt; section of web.config file.</p>  <pre class="brush: xml">&lt;add assembly=&quot;MyLinksMenu, Version=1.0.0.0, Culture=neutral, PublicKeyToken=abcdefg1234567890&quot; /&gt;
</pre>

<p>I implemented the code inside a web application scoped feature’s event receiver class. This allows 
  <br />SharePoint to add/remove the required line in web.config whenever the feature is activated/deactivated on a web application.</p>

<p><b>Here I added some class variables and an additional method.</b></p>

<pre class="brush: c-sharp">
string modPath = &quot;configuration/system.web/compilation/assemblies&quot;;
string modOwner = &quot;MyLinksMenu&quot;;
string modName = &quot;add[@assembly=\&quot;MyLinksMenu, Version=1.0.0.0, Culture=neutral, PublicKeyToken=abcdefg123456789\&quot;]&quot;;
string modValue = &quot;&lt;add assembly=\&quot;MyLinksMenu, Version=1.0.0.0, Culture=neutral, PublicKeyToken=abcdefg123456789\&quot; /&gt;&quot;;

protected SPWebConfigModification createWebConfigModification()
{
  SPWebConfigModification myModification = new SPWebConfigModification(modName, modPath);
  myModification.Sequence = 0;
  myModification.Owner = modOwner;
  myModification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
  myModification.Value = modValue;
  return myModification;
}
</pre>

<p><b>FeatureActivated Method</b></p>

<pre class="brush: c-sharp">public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
  SPWebApplication webapp = (SPWebApplication)properties.Feature.Parent;
  Collection&lt;SPWebConfigModification&gt; modsCollection =   webapp.WebConfigModifications;
  bool configExist = false;
  for (int i = 0; i &lt; modsCollection.Count; i++)
  {
    if (modsCollection[i].Owner == modOwner)
    {
      configExist = true;
      break;
    }
  }
  if (!configExist)
  {
    webapp.WebConfigModifications.Add(createWebConfigModification());
    webapp.Update();
    webapp.Farm.Services.GetValue&lt;SPWebService&gt;().ApplyWebConfigModifications();
  }
}
</pre>

<p><b>FeatureDeactivating Method</b></p>

<pre class="brush: c-sharp">public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
  SPWebApplication webapp = (SPWebApplication)properties.Feature.Parent;
  Collection&lt;SPWebConfigModification&gt; modsCollection = webapp.WebConfigModifications;
  Collection&lt;SPWebConfigModification&gt; modsToBeRemoved = new Collection&lt;SPWebConfigModification&gt;();

  for (int i = 0; i &lt; modsCollection.Count; i++)
  {
    if (modsCollection[i].Owner == modOwner)
    {
      modsToBeRemoved.Add(modsCollection[i]);
    }
  }

  if (modsToBeRemoved.Count &gt; 0)
  {
    for (int i = 0; i &lt; modsToBeRemoved.Count; i++)
    {
      webapp.WebConfigModifications.Remove(modsToBeRemoved[i]);
    }
    webapp.Update();
    webapp.Farm.Services.GetValue&lt;SPWebService&gt;().ApplyWebConfigModifications();
  }
}
</pre>

<h3>References</h3>

<p>How to: Add and Remove Web.config Settings Programmatically 
  <br /><a href="http://msdn.microsoft.com/en-us/library/bb861909.aspx">http://msdn.microsoft.com/en-us/library/bb861909.aspx</a></p>
<link rel="stylesheet" type="text/css" href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/SyntaxHighlight/Styles/7711.shCore.css" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13-SyntaxHighlight-Styles/7711.shCore.css" /><link rel="stylesheet" type="text/css" href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/SyntaxHighlight/Styles/8132.shThemeDefault.css" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13-SyntaxHighlight-Styles/8132.shThemeDefault.css" /><script language="javascript" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/SyntaxHighlight/Scripts/8206.shCore.js" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13-SyntaxHighlight-Scripts/8206.shCore.js"></script><script language="javascript" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/SyntaxHighlight/Scripts/0207.shBrushCSharp.js" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13-SyntaxHighlight-Scripts/0207.shBrushCSharp.js"></script><script language="javascript" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/SyntaxHighlight/Scripts/7242.shBrushXml.js" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13-SyntaxHighlight-Scripts/7242.shBrushXml.js"></script><script type="text/javascript">SyntaxHighlighter.all()</script>]]></content:encoded>
    </item>
    <item>
      <title>SP2010 Survey List Error and Event ID 5586</title>
      <link>https://docs.microsoft.com/archive/blogs/allenwang/sp2010-survey-list-error-and-event-id-5586</link>
      <pubDate>Sun, 20 May 2012 20:39:00 GMT</pubDate>
      <dc:creator><![CDATA[AllenWang]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/allenwang/2012/05/20/sp2010-survey-list-error-and-event-id-5586/</guid>
      <description><![CDATA[Are you experiencing the following combination of errors from event logs and ULS los? I found it...]]></description>
      <content:encoded><![CDATA[<p>Are you experiencing the following combination of errors from event logs and ULS los? I found it occur most often after SharePoint migration from 2007 to 2010. However the same issue can also be reproduced in SP2010 using the out-of-box survey list and a minor change via the standard user interface.</p>
<p><b><span style="text-decoration: underline;">Summary</span></b></p>
<p>To save you time, the problem is caused by the first question in the Survey list has a RowOrdinal number other than 0. In another word, the first question in a survey list must have RowOrdinal number equals to 0.</p>
<p>&nbsp;</p>
<h1>First, let&rsquo;s look at the errors.</h1>
<p><b><span style="text-decoration: underline;">Application Event ID 5586:</span></b></p>
<p>Unknown SQL Exception 515 occurred. Additional error information from SQL Server is included below.</p>
<p>Cannot insert the value NULL into column 'tp_DocId', table 'SP2010_Content_10030.dbo.AllUserData'; column does not allow nulls. INSERT fails.</p>
<p>The statement has been terminated.</p>
<p>&nbsp;</p>
<p><b><span style="text-decoration: underline;">SharePoint ULS Log:</span></b></p>
<p>MetadataNavigationContext Page_InitComplete: No XsltListViewWebPart was found on this page[/Team/Lists/Survey/NewForm.aspx?IsDlg=1].&nbsp; Hiding key filters and downgrading tree functionality to legacy ListViewWebPart(v3) level for this list.</p>
<p>System.Data.SqlClient.SqlException: Cannot insert the value NULL into column 'tp_DocId', table 'SP2010_Content_10030.dbo.AllUserData'; column does not allow nulls. INSERT fails.&nbsp; The statement has been terminated.&nbsp;&nbsp;&nbsp;</p>
<p>SqlError: 'Cannot insert the value NULL into column 'tp_DocId', table 'SP2010_Content_10030.dbo.AllUserData'; column does not allow nulls. INSERT fails.'&nbsp;&nbsp;&nbsp; Source: '.Net SqlClient Data Provider' Number: 515 State: 2 Class: 16 Procedure: 'proc_AddListItem' LineNumber: 475 Server: 'Win2k8-SQL-01'</p>
<p>SqlError: 'The statement has been terminated.'&nbsp;&nbsp;&nbsp; Source: '.Net SqlClient Data Provider' Number: 3621 State: 0 Class: 0 Procedure: 'proc_AddListItem' LineNumber: 475 Server: 'Win2k8-SQL-01'</p>
<p>Unknown SQL Exception 515 occurred. Additional error information from SQL Server is included below.&nbsp; Cannot insert the value NULL into column 'tp_DocId', table 'SP2010_Content_10030.dbo.AllUserData'; column does not allow nulls. INSERT fails.&nbsp; The statement has been terminated.</p>
<p>ConnectionString: 'Data Source=Win2k8-SQL-01;Initial Catalog=SP2010_Content_10030;Integrated Security=True;Enlist=False;Asynchronous Processing=False;Connect Timeout=15'&nbsp;&nbsp;&nbsp; ConnectionState: Closed ConnectionTimeout: 15</p>
<p>&nbsp;</p>
<p>To keep this post readable, I&rsquo;ve omitted the ULS log entry showing the complete SQL query that was executed and failed. You can follow the repro-steps to get the exact SQL query from your environment.</p>
<p>The problem here is because SharePoint utilizes SQL server row wrapping to allow a maximum number of columns in a SharePoint list where SharePoint Server will create several rows in the database when data will not fit on a single row. It then uses a property called <b>RowOrdinal </b>to identify in which row a certain field should be stored. When RowOrdinal = 0, the field is stored in the first row of the row set for that list item and when RowOrdinal = 1, the field is stored in the second row of the row set for that list item, and vice versa.</p>
<p>The number of fields/columns allowed in one single row is based on the type of the fields/columns. <a href="http://technet.microsoft.com/en-us/library/cc262787.aspx#Column">SharePoint Server 2010 Software Boundaries and Limits &ndash; Column Limits</a> states the following;</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top">
<p><b>Limit </b></p>
</td>
<td valign="top">
<p><b>Maximum value </b></p>
</td>
<td valign="top">
<p><b>Limit type </b></p>
</td>
<td valign="top">
<p><b>Size per column </b></p>
</td>
<td valign="top">
<p><b>Notes </b></p>
</td>
</tr>
<tr>
<td>
<p>Single line of text</p>
</td>
<td>
<p>276</p>
</td>
<td>
<p>Threshold</p>
</td>
<td>
<p>28 bytes</p>
</td>
<td>
<p>SQL Server row wrapping occurs after each 64 columns in a SharePoint list. The default row wrapping value of six allows for a maximum of 384 Single line of text columns per SharePoint list (6 * 64 = 384). However, because the limit per SharePoint list item is 8,000 bytes, of which 256 bytes are reserved for built-in SharePoint columns, the actual limit is 276 Single line of text columns.</p>
</td>
</tr>
<tr>
<td>
<p>Multiple Lines of Text</p>
</td>
<td>
<p>192</p>
</td>
<td>
<p>Threshold</p>
</td>
<td>
<p>28 bytes</p>
</td>
<td>
<p>SQL Server row wrapping occurs after each 32 columns in a SharePoint list. The default row wrapping value of six allows for a maximum of 192 Multiple lines of text columns per SharePoint list (6 * 32 = 192).</p>
</td>
</tr>
<tr>
<td>
<p>Choice</p>
</td>
<td>
<p>276</p>
</td>
<td>
<p>Threshold</p>
</td>
<td>
<p>28 bytes</p>
</td>
<td>
<p>SQL Server row wrapping occurs after each 64 columns in a SharePoint list. The default row wrapping value of 6 allows for a maximum of 384 Choice columns per SharePoint list (6 * 64 = 384); ); however because the limit per SharePoint list item is 8,000 bytes, of which 256 bytes are reserved for built-in SharePoint columns, the actual limit should be 276 Choice columns.</p>
</td>
</tr>
<tr>
<td>
<p>Number</p>
</td>
<td>
<p>72</p>
</td>
<td>
<p>Threshold</p>
</td>
<td>
<p>12 bytes</p>
</td>
<td>
<p>SQL Server row wrapping occurs after each 12 columns in a SharePoint list. The default row wrapping value of six allows for a maximum of 72 Number columns per SharePoint list (6 * 12 = 72).</p>
</td>
</tr>
</tbody>
</table>
<p>Note: visit the link for a complete list of column types.</p>
<p>Take <b>Number</b> type for example, row wrapping occurs after each <b>12</b> columns in a SharePoint list as stated above. This means the 13<sup>th</sup> Number typed column you created, would have a RowOrdinal = 1 (25<sup>th</sup> Number typed column would then have RowOrdinal = 2).</p>
<h1>Repro Steps</h1>
<p>With the above information, we can reproduce the problem as below</p>
<ol>
<li>Create a survey list.</li>
<li>Create 13 questions all based on Number type.</li>
<li>Answer the survey by responding all 13 questions. This should complete without any error.</li>
<li>Go to the list settings, change the order of 13<sup>th</sup> question to 1. (so it becomes the first question of the survey list)</li>
<li>Try answering the survey again by responding all 13 questions.<br />Bam! The SharePoint dialog error hits you in the face!</li>
</ol>
<p>In case you still don&rsquo;t know what&rsquo;s going on. This is because the 13<sup>th</sup> question has RowOrdinal equals to 1 which is not allowed by SharePoint.</p>
<h1>Remediation for Existing Survey List</h1>
<p>For existing survey lists, the idea is to figure out which questions have RowOrdinal = 0 and then make the one that has RowOrdinal = 0 to be the first question in the survey list.</p>
<p>To find out RowOrdinal number assigned to each of the columns/fields, save the list as a template, eg. Survey.stp. Change the file name to survey.cab, then extract the manifest.xml file in it.</p>
<p>Open manifest.xml and look under ListTemplate &gt; UserLists &gt;List &gt; Metadata &gt; Fields</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/4353.manifest.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13/4353.manifest.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/4353.manifest.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13/4353.manifest.png" /></a></p>
<p></p>
<h1>My Thought on This&hellip;.</h1>
<p>In my opinion, I think it&rsquo;s more of a bad design issue rather than a bug. I can&rsquo;t be bothered going into details to capture and analyse SQL Profiler trace, but I did create a custom list and check the list template&rsquo;s manifest.xml file. With normal a list or library, the first field within &lt;Fields&gt; tag is actually content type ID with RowOrdinal equals to 0. Users cannot change the order of fields within &lt;Fields&gt; tag through SharePoint user interface hence eliminating the possibility of such problem. SharePoint PG certainly needs to review survey list design and come up with a better solution.</p>]]></content:encoded>
    </item>
    <item>
      <title>SharePoint 2010 Health Analyser Timer Job Changed Custom Web.Config Machine Key</title>
      <link>https://docs.microsoft.com/archive/blogs/allenwang/sharepoint-2010-health-analyser-timer-job-changed-custom-web-config-machine-key</link>
      <pubDate>Thu, 22 Mar 2012 16:59:00 GMT</pubDate>
      <dc:creator><![CDATA[AllenWang]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/allenwang/2012/03/22/sharepoint-2010-health-analyser-timer-job-changed-custom-web-config-machine-key/</guid>
      <description><![CDATA[I recently had an issue with custom machine key in the web.config file on the WFE servers. We use...]]></description>
      <content:encoded><![CDATA[<p>I recently had an issue with custom machine key in the web.config file on the WFE servers. We use non-autogenerated machine key to de/encrypt custom solutions deployed in SharePoint farm. However this key was changed every midnight and the next morning users would start complaining about custom solution throwing errors.</p>
<p>Initial research (<a href="http://social.technet.microsoft.com/Forums/en-US/sharepoint2010setup/thread/67cf387e-c784-4f33-914d-9234d3550952/#a4ec238b-6a61-4482-9cf0-21d7b8b4b027" target="_blank">Thanks for Nigel Price</a>) showed that <strong>Health Analysis Job (Daily, Microsoft SharePoint Foundation Web Application, All Servers)</strong> is responsible for this change. Disabling this timer job would obviously solve this issue, but Nigel raised a question as where did the timer job get the machine key from. It doesn&rsquo;t matter what your previous machines key value is, it always got reset back to the anther key after the timer job was executed.</p>
<p>It turns out the value is stored in SharePoint Config DB. I was able to see the entry in my VM with the following SQL query:</p>
<blockquote>
<pre class="csharpcode"><span class="kwrd">SELECT</span> * <span class="kwrd">FROM</span> Objects
<span class="kwrd">WHERE</span> Properties <span class="kwrd">LIKE</span> '%123456789%'</pre>
</blockquote>
<p>Replace <strong>123456789</strong>with the key that the timer job changed to on your server. The returned result is in xml format, and the part related to the machine key would look something like below:</p>
<p>&lt;sFld type="String" name="<strong>m_ViewStateValidationKey</strong>"&gt;<span style="background-color: #ffff00;">ABCDEFGH4D4FA9458005157779C4AFA208757D2B483088</span>&lt;/sFld&gt;&nbsp;&nbsp; <br />&lt;sFld type="String" name="<strong>m_ViewStateDecryptionKey</strong>"&gt;0ED48AAF42669A67A2C99D568D553FB62BEEC903DAA37B3C&lt;/sFld&gt;</p>
<p><span style="font-family: Segoe UI;" face="Segoe UI">Just to prove that this is the value timer job actually used to modify web.config file every night, I </span>modified this value in Config DB (in my VM) and rerun the timer job. The machine key was indeed changed to the value I updated in the Config DB.</p>
<pre class="csharpcode">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/metablogapi/6560.image_3CAB55D3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13-metablogapi/6560.image_5F00_3CAB55D3.png"><img style="display: inline; background-image: none;" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/metablogapi/2656.image_thumb_0F864338.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13-metablogapi/2656.image_5F00_thumb_5F00_0F864338.png" border="0" height="336" width="440" /></a></pre>
<p>After above confirmation, I went ahead to disable the timer job. (I would never touch Config DB in a running farm)</p>
<p>However, if you know a supported method to update this ViewStateValidationKey and ViewStateDecriptionKey, please please share with me. Thanks!</p>
<p></p>
<p>2012-09-04<br />===============</p>
<p>The solution is to disable the&nbsp; ViewStateKeysAreOutOfSync health analysis rule by running the following PowerShell cmdlet:</p>
<blockquote>
<p><span style="font-family: Courier New; font-size: x-small;" face="Courier New" size="2">Get-SPHealthAnalysisRule ViewStateKeysAreOutOfSync | Disable-SPHealthAnalysisRule</span></p>
</blockquote>
<p>Ref: <a target="_blank" title="http://blogs.msdn.com/b/mutaz/archive/2012/05/30/keep-your-own-machinekey-values-in-sharepoint-2010-web-config.aspx" href="http://blogs.msdn.com/b/mutaz/archive/2012/05/30/keep-your-own-machinekey-values-in-sharepoint-2010-web-config.aspx">http://blogs.msdn.com/b/mutaz/archive/2012/05/30/keep-your-own-machinekey-values-in-sharepoint-2010-web-config.aspx</a></p>]]></content:encoded>
    </item>
    <item>
      <title>SharePoint Default My Site Association With Office 2007/2010</title>
      <link>https://docs.microsoft.com/archive/blogs/allenwang/sharepoint-default-my-site-association-with-office-20072010</link>
      <pubDate>Wed, 14 Mar 2012 00:35:00 GMT</pubDate>
      <dc:creator><![CDATA[AllenWang]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/allenwang/2012/03/14/sharepoint-default-my-site-association-with-office-20072010/</guid>
      <description><![CDATA[There is a nice article about what this links does and how to change your default my site.
Set or...]]></description>
      <content:encoded><![CDATA[<p>There is a nice article about what this links does and how to change your default my site.</p>
<h3><span style="font-size: x-small;" size="2">Set or change your default My Site</span></h3>
<p><a href="http://office.microsoft.com/en-us/sharepoint-server-help/set-or-change-your-default-my-site-HA010168639.aspx" target="_blank">http://office.microsoft.com/en-us/sharepoint-server-help/set-or-change-your-default-my-site-HA010168639.aspx</a></p>
<p>&nbsp;</p>
<p>However what I wanted to do was to *remove* default my site settings from my PC, so it would stop prompting me for account credentials. (Yes, I understand credential prompt could be a different issue, but in this case it&rsquo;s trying to access a different domain on on of my client&rsquo;s farm which requires VPN connection. One of my colleague clicked on the damn YES button when he was working on my PC)</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/metablogapi/2538.image_5D0ADFC9.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13-metablogapi/2538.image_5F00_5D0ADFC9.png"><img style="display: inline; background-image: none;" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/metablogapi/8306.image_thumb_3B3F0738.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13-metablogapi/8306.image_5F00_thumb_5F00_3B3F0738.png" border="0" height="171" width="423" /></a></p>
<p>&nbsp;</p>
<p>Long story short, I used ProcMon to trace the activity back to a registry key. Deleting the registry key solved my problem (which in term, removed the "&rsquo;default my site&rsquo; settings on my PC)</p>
<blockquote>
<p><strong>HKCU\Software\AppDataLow\Microsoft\Office\14.0\Common\Portal\</strong></p>
</blockquote>
<p>Portal key contains a string value <strong>PersonalSiteURL</strong> pointing to the link in the above dialog box.</p>]]></content:encoded>
    </item>
    <item>
      <title>SharePoint 2010: Missing Server Side Dependencies</title>
      <link>https://docs.microsoft.com/archive/blogs/allenwang/sharepoint-2010-missing-server-side-dependencies</link>
      <pubDate>Sat, 08 Oct 2011 07:23:00 GMT</pubDate>
      <dc:creator><![CDATA[AllenWang]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/allenwang/2011/10/08/sharepoint-2010-missing-server-side-dependencies/</guid>
      <description><![CDATA[--- SUMMARY ---SharePoint 2010 SP1 + 2011 August CU multi-server farm's Central Admin site's Health...]]></description>
      <content:encoded><![CDATA[<p style="padding-left: 30px;">--- SUMMARY ---<br />SharePoint 2010 SP1 + 2011 August CU multi-server farm's Central Admin site's Health Analyzer shows "Mising Server Side Dependencies" on Web Part ID <span style="font-family: Consolas;" face="Consolas">[baf5274e-a800-8dc3-96d0-0003d9405663]. Solution is to replicate Central Admin site's virtual directory folder and the web.config file </span>from the server hosting Central Admin site to all other WFE servers, like if the virtual directory of central admin site on the AP server is "C:\inetpub\wwwroot\wss\VirtualDirectories\55555", then create a folder "55555"&nbsp; under "C:\inetpub\wwwroot\wss\VirtualDirectories" on every other WFE servers and copy the web.config file from AP server's 55555 folder to every other WFE servers' 55555 folder.</p>
<p></p>
<p>The issue came to me when I was setting up a fresh multi-server farm for a client. To keep things simple, let&rsquo;s just use small farm scenario as below:</p>
<p><strong>Environment</strong> <br />==========</p>
<p>1 x WFE Server: SP2010WB01 <br />------------------------------- <br />Hosts 1 web application, content DB name [SP2010_Content_80]</p>
<p>1 x AP Server: SP2010AP01 <br />---------------------------- <br />Hosts Central Administration Site&nbsp; [SP2010_AdminContentDB] and all service applications</p>
<p>1 x DB Server: SP2010DB01</p>
<p>SharePoint Patch: SP1 + 2011 August CU (14.0.6109.5000)</p>
<p>&nbsp;</p>
<p><strong>Problem Description</strong> <br />=============== <br />"Missing Server Side Dependencies" shows up in SharePoint Central Administration site's Heath Analyzer shown here [<a title="Missing Server Side Dependencies" href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/20111008/8750.MissingServerSideDependencies_AP.pdf" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13-20111008/8750.MissingServerSideDependencies_5F00_AP.pdf">MissingServerSideDependencies_AP.pdf</a>]. Below is a list of reported MissingWebParts and Web Part ClassID that are reference in the content database [SP2010_AdminContentDB].</p>
<p><span style="font-family: Consolas;" face="Consolas">[baf5274e-a800-8dc3-96d0-0003d9405663] <br />[9eba9c17-3b89-a2e7-a3cf-0ee3d7c2adb1] <span style="font-family: calibri;" face="calibri">SearchTopologyView</span> <br />[07f48b68-2e69-c86a-ebe4-16359e03ebc2] <span style="font-family: Calibri;" face="Calibri">AdvancedSearchBox</span> <br />[23091f6c-295d-4493-504c-1714a20d65a2] <span style="font-family: calibri;" face="calibri">PeopleRefinementWebPart</span> <br />[7d319bdd-d90e-7861-b7f0-2f9f4cec3004] <span style="font-family: calibri;" face="calibri">CoreResultsWebPart</span> <br />[c744e2b2-158c-c2f8-2f80-54bf046ff644] <span style="font-family: calibri;" face="calibri">PeopleSearchBoxEx</span> <br />[b36f9dfe-325a-1b44-e6bb-645dcf79c770] <span style="font-family: calibri;" face="calibri">FarmSystemStatus</span> <br />[0a60f514-1dea-8537-b588-64ee5e224da3] <span style="font-family: calibri;" face="calibri">SearchBoxEx</span> <br />[9f56656f-6aa3-0d55-a812-711bf65864ea] <br />[9637ed85-7d44-e135-35ba-73ce390ebf93] <span style="font-family: calibri;" face="calibri">SearchPagingWebPart</span> <br />[2fc2e287-55c9-b5d1-0d5c-7458bc3c9841] <span style="font-family: calibri;" face="calibri">ContactFieldControl</span> <br />[8acac35f-e9d3-95c3-76c7-76fe034cef50] <span style="font-family: calibri;" face="calibri">SearchSummaryWebPart</span> <br />[926a1a3e-d1ff-f58f-8b3a-854974660703] <span style="font-family: calibri;" face="calibri">ContentSourcesStatus</span> <br />[f9c020f4-bcb2-3629-0460-9e5ec4c9de93] <span style="font-family: calibri;" face="calibri">QuerySuggestionsWebPart</span> <br />[de8c8afc-7c6e-e9fc-91c2-aa4a291c3623] <span style="font-family: calibri;" face="calibri">SearchApplicationSystemStatus</span> <br />[bc8768f7-7d8c-1d56-b5a5-bb19cca9c7b8] <span style="font-family: calibri;" face="calibri">FederatedResultsWebPart</span> <br />[83d7efb5-5a0a-0d4e-fc32-cf0eae4b6cb1] <span style="font-family: calibri;" face="calibri">SearchStatsWebPart</span> <br />[42b6d12b-947f-6ec4-9540-dc2f3e8f2425] <span style="font-family: calibri;" face="calibri">PeopleCoreResultsWebPart</span> <br />[3517e131-b02d-114b-1df2-dd9fa67b90c6] <span style="font-family: calibri;" face="calibri">TopFederatedResultsWebPart</span> <br />[d46a22f8-7373-12cb-4e07-e1b78e3dba96] <span style="font-family: calibri;" face="calibri">RefinementWebPart</span> <br />[5cc5df3a-29a8-a713-5898-e52e2dce72a8] <span style="font-family: calibri;" face="calibri">SearchApplicationShortcutsList</span> <br />[874f5460-71f9-fecc-e894-e7e858d9713e] <br />[ff79cbb5-48cf-96ee-3f74-f22cc1b00fbd] <span style="font-family: calibri;" face="calibri">FarmSearchApplicationList</span> <br />[0ff9a0d5-1514-7a3b-fb97-fccbc902e380] </span><span style="font-family: calibri;" face="calibri">HighConfidenceWebPart</span></p>
<p>As you may have read from many other blogs, I also tried browsing to the following pages, but nothing worked. I guess it&rsquo;s because none of the above Web Part Class ID is [8d6034c4-a416-e535-281a-6b714894e1aa]</p>
<p>e.g. <br /> <br />http://{centraladmin}/SearchAdministration.aspx <br />http://{centraladmin}/searchfarmdashboard.aspx <br />http://{centraladmin}/sites/Help/_catalogs/masterpage/SearchResults.aspx <br />http://{centraladmin}/sites/Help/_catalogs/masterpage/PeopleSearchResults.aspx <br />http://{centraladmin}/sites/Help/_catalogs/masterpage/TabViewPageLayout.aspx <br />http://{centraladmin}/sites/Help/_catalogs/masterpage/AdvancedSearchLayout.aspx <br />http://{centraladmin}/sites/Help/_catalogs/masterpage/SearchMain.aspx <br /> <br />Reference: <a title="http://blog.scoreman.net/2010/11/solution-to-missing-server-side-dependencies-8d6034c4-a416-e535-281a-6b714894e1aa/" href="http://blog.scoreman.net/2010/11/solution-to-missing-server-side-dependencies-8d6034c4-a416-e535-281a-6b714894e1aa/">http://blog.scoreman.net/2010/11/solution-to-missing-server-side-dependencies-8d6034c4-a416-e535-281a-6b714894e1aa/</a></p>
<p>&nbsp;</p>
<p><strong>Repro Steps <br /></strong>===========</p>
<ol>
<li>To reproduce this issue, provision Central Administration site only on the AP server, which is SP2010AP01 in this case. Make sure the AP server does not provision or hosts any other web applications by turning off &ldquo;Microsoft SharePoint Foundation Web Application&rdquo; service in SharePoint Central Admin &ndash;&gt; System Settings &ndash;&gt; Services on Server.</li>
<li>Create a web application which contains at least 1 site collection. This web application will be provisioned only on the WFE server SP2010WB01 for the obvious reason.</li>
<li>Go to SharePoint Central Administration site &ndash;&gt; Monitoring &ndash;&gt; Review problems and solutions</li>
</ol>
<p><br /><strong>Analysis <br /></strong>===========</p>
<p>When you click on &ldquo;Reanalyze Now&rdquo; button, a timer job gets created &ldquo;Microsoft.SharePoint.Administration.Health.ContentDatabaseCorruption On Demand Health Analysis Job&rdquo; and executed by the timer service. If you click on this timer job definition, it shows the following:</p>
<table style="border: 1px solid #cccccc; width: 526px;" cellpadding="2" cellspacing="0">
<tbody>
<tr>
<td style="border-bottom: #cccccc 1px solid; border-right: #cccccc 1px solid;" valign="top" width="261"><strong><span style="color: #808080;" color="#808080">Job Title</span></strong></td>
<td style="border-bottom: #cccccc 1px solid;" valign="top" width="263"><span style="color: #808080;" color="#808080">Microsoft.SharePoint.Administration.Health.ContentDatabaseCorruption On Demand Health Analysis Job</span></td>
</tr>
<tr>
<td style="border-bottom: #cccccc 1px solid; border-right: #cccccc 1px solid;" valign="top" width="261"><strong><span style="color: #808080;" color="#808080">Job Description</span></strong></td>
<td style="border-bottom: #cccccc 1px solid;" valign="top" width="263"><span style="color: #808080;" color="#808080">Runs a single SharePoint Health Analyzer Rule.</span></td>
</tr>
<tr>
<td style="border-right: #cccccc 1px solid;" valign="top" width="261"><span style="color: #808080;" color="#808080"><strong>Job Properties <br /></strong>This section lists the properties for this job.</span></td>
<td valign="top" width="263"><span style="color: #808080;" color="#808080">Web application: N/A <br /> <br />Last run time: 10/8/2011 11:36 PM</span></td>
</tr>
</tbody>
</table>
<p>Now if we are talking about timer jobs and Timer Service, then we should automatically be thinking about the TimerLocks table in the farm&rsquo;s configuration database. The table indicates which server&rsquo;s timer service is responsible for executing all the timer jobs. The following SQL query would tell which server is currently responsible for running which timer jobs. (Just don&rsquo;t let MS know that you run the query against the DB&hellip; )</p>
<pre class="csharpcode"><span class="kwrd">SELECT</span> TimerLocks.JobId, Objects.name, TimerLocks.lockedtime
<span class="kwrd">FROM</span> TimerLocks <span class="kwrd">join</span> Objects <span class="kwrd">ON</span> TimerLocks.lockedbyserverid = objects.id</pre>
<p>During my experiment, the WFE server was locked for running all the timer jobs, therefore I stop the timer service on the WFE server, so I am sure that the AP bserver would be running all the timer jobs. You can use the following command to start and stop Timer Service.</p>
<p><span style="font-family: Consolas;" face="Consolas"><strong>net stop SPTimerV4 <br />net start SPTimerV4</strong></span></p>
<p>After &ldquo;Reanalyze&rdquo; the issue again, I got a different set of results in the explanation of &ldquo;Missing Server Side Dependencies&rdquo; reported that&rsquo;s referenced in the database [SP1010_Content_80] which is the content database of portal web application provisioned on the WFE server, and nothing about the SP2010_AdminContentDB.</p>
<p>Click here for the complete reported log [<a title="Missing Server Side Dependencies" href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/16/13/20111008/0676.MissingServerSideDependencies_WB.pdf" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-16-13-20111008/0676.MissingServerSideDependencies_5F00_WB.pdf" target="_blank">MissingServerSideDependencies_WB.pdf</a>]</p>
<p><span style="font-family: Consolas;" face="Consolas">[baf5274e-a800-8dc3-96d0-0003d9405663] <br />[07f48b68-2e69-c86a-ebe4-16359e03ebc2] AdvancedSearchBox <br />[7d319bdd-d90e-7861-b7f0-2f9f4cec3004] CoreResultsWebPart <br />[0a60f514-1dea-8537-b588-64ee5e224da3] SearchBoxEx <br />[9f56656f-6aa3-0d55-a812-711bf65864ea] <br />[9637ed85-7d44-e135-35ba-73ce390ebf93] SearchPagingWebPart <br />[8acac35f-e9d3-95c3-76c7-76fe034cef50] SearchSummaryWebPart <br />[f9c020f4-bcb2-3629-0460-9e5ec4c9de93] QuerySuggestionsWebPart <br />[83d7efb5-5a0a-0d4e-fc32-cf0eae4b6cb1] SearchStatsWebPart <br />[3517e131-b02d-114b-1df2-dd9fa67b90c6] TopFederatedResultsWebPart <br />[d46a22f8-7373-12cb-4e07-e1b78e3dba96] RefinementWebPart <br />[874f5460-71f9-fecc-e894-e7e858d9713e] <br />[107ab2dc-58a6-809c-9b41-f2e17e6e064f] ContentByQueryWebPart <br />[7494019e-cc3c-dc3d-88ee-f9782d55ba37] TableOfContentsWebPart <br />[0ff9a0d5-1514-7a3b-fb97-fccbc902e380] HighConfidenceWebPart</span></p>
<p>Checking the Health Analyzer Rule Definition of Missing server side dependencies; as you can see below, the rule is defined to run on Any Server. I guess it does not know the server role that it was running on. eg. the rule or the timer service does not go a further step to find out which server (and its role) is currently locked for running the timer job.</p>
<p><strong>When the AP server is locked for running timer jobs, it reports all the missing server side dependencies about all other web applications&rsquo; content databases, since AP server does not host those web apps. </strong></p>
<p><strong>when the WFE server is locked for running timer jobs, it reports all the missing server side dependencies about Central Administration site&rsquo;s content database, since WFE server does not host SharePoint Central Admin site.</strong></p>
<p>&nbsp;</p>
<p><br />&nbsp;</p>
<p><strong>Solutions <br /></strong>===========</p>
<p>I wouldn&rsquo;t really call these solutions, but more of a workaround, since it&rsquo;s obviously a bug. </p>
<p>Anyway, the solutions&hellip;..</p>
<ol>
<li>Ignore the reported issue<br /><br /></li>
<li>Disable the &ldquo;Missing Server Side Dependencies&rdquo; rule definition for the time being.<br /><br /></li>
<li>Provision Central Administration site on all other WFE servers&hellip;. ( Personally I would never do this, even if the error shows up every minute in the event log&hellip;)<br /><br /></li>
<li>Duplicate the Central Admin web app&rsquo;s virtual directory on all other WFE servers and copy the web.config file over. <br />for example, if the virtual directory of your Central Admin site on the AP server is under C:\inetpub\wwwroot\wss\VirtualDirectories\55555, then create the same folder under every WFE servers. <br /><br />In this case, I created a folder called &ldquo;55555&rdquo; under C:\inetpub\wwwroot\wss\VirtualDirectories\ and I copied <strong>web.config</strong> file from the folder on AP server to the same folder on the WFE server. <br />By doing this, we can trick the SharePoint Health Analyzer / timer service to think there is a Central Admin site on every server in the farm, so it wouldn&rsquo;t matter which server is locked for running the timer jobs.</li>
</ol>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Further Information <br /></strong>=========== ====</p>
<p>Apparently, MS is aware of the issue and is going to fix it in the next CU&hellip; (finger crossed&hellip;).</p>
<p></p>
<p>&nbsp;</p>
<p>Hope this helps.</p>
<p>&nbsp;</p>
<p>Cheers,</p>
<p>Allen Wang</p>]]></content:encoded>
    </item>
    <item>
      <title>Tech-Ed 2011 Session Videos Available Online</title>
      <link>https://docs.microsoft.com/archive/blogs/allenwang/tech-ed-2011-session-videos-available-online</link>
      <pubDate>Tue, 30 Aug 2011 23:38:00 GMT</pubDate>
      <dc:creator><![CDATA[AllenWang]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/allenwang/2011/08/30/tech-ed-2011-session-videos-available-online/</guid>
      <description><![CDATA[Tech-Ed 2011 sessions available for viewing online &hellip;...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: medium;"><strong>Tech-Ed 2011</strong></span> sessions available for viewing online &hellip; <a href="https://channel9.msdn.com/Events/TechEd/" target="_blank">https://channel9.msdn.com/Events/TechEd/</a></p>
<p><em>For those who are too poor, too cheap, too busy, too scared to attend :)</em></p>
<p>&nbsp;</p>
<p><strong><a href="https://channel9.msdn.com/Events/TechEd/Australia/Tech-Ed-Australia-2011/" target="_blank">Tech-Ed Australia 2011</a></strong> is currently going on right now, session videos shall be available after the event.</p>
<p>&nbsp;</p>
<p>Or you can enjoy the Kiwi version first.</p>
<p><strong><a title="Tech-Ed New Zealand 2011" href="https://channel9.msdn.com/Events/TechEd/NewZealand/2011" target="_blank">Tech-Ed New Zealand 2011</a></strong></p>
<p><strong></strong>&nbsp;</p>
<p><strong></strong>&nbsp;</p>
<p></p>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft Windows 8 Preview</title>
      <link>https://docs.microsoft.com/archive/blogs/allenwang/microsoft-windows-8-preview</link>
      <pubDate>Sun, 28 Aug 2011 17:29:00 GMT</pubDate>
      <dc:creator><![CDATA[AllenWang]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/allenwang/2011/08/28/microsoft-windows-8-preview/</guid>
      <description><![CDATA[Windows 8 press conference&nbsp;| Showcase in Taiwan...]]></description>
      <content:encoded><![CDATA[<p><strong>Windows 8 press conference&nbsp;| Showcase in Taiwan </strong></p>
<p><a href="http://www.microsoft.com/presspass/silverlightApps/videoplayer3/standalone.aspx?contentID=win8_preview1&amp;src=/presspass/presskits/windows7/channel.xml">http://www.microsoft.com/presspass/silverlightApps/videoplayer3/standalone.aspx?contentID=win8_preview1&amp;src=/presspass/presskits/windows7/channel.xml</a></p>
<p>&nbsp;</p>
<p>or donwload the video directly from:</p>
<p><a href="http://cdn-smooth.ms-studiosmedia.com/news/mp4_mq/1006753_Microsoft_Windows8_Press_v3_MQ.mp4">http://cdn-smooth.ms-studiosmedia.com/news/mp4_mq/1006753_Microsoft_Windows8_Press_v3_MQ.mp4</a></p>]]></content:encoded>
    </item>
  </channel>
</rss>