<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>William&#039;s Blog</title>
	<atom:link href="http://vspug.com/wpowell/feed/" rel="self" type="application/rss+xml" />
	<link>http://vspug.com/wpowell</link>
	<description>Just another VSPUG - Virtual SharePoint User Group weblog</description>
	<lastBuildDate>Thu, 25 Feb 2010 15:44:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>STSDEV Debugging</title>
		<link>http://vspug.com/wpowell/2008/11/21/stsdev-debugging/</link>
		<comments>http://vspug.com/wpowell/2008/11/21/stsdev-debugging/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 18:18:00 +0000</pubDate>
		<dc:creator>wpowell</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[I don&#39;t like hacking the gac in order to debug things for MOSS, so I created a new Target for STSDEV.
This target simply copies the output assembly to the bin directory of my web application, removes the assembly from the GAC, and then refreshes the App Pool. At this point you can simply attach to [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#39;t like hacking the gac in order to debug things for MOSS, so I created a new Target for STSDEV.</p>
<p>This target simply copies the output assembly to the bin directory of my web application, removes the assembly from the GAC, and then refreshes the App Pool. At this point you can simply attach to the w3wp.exe process in your off to the races (or the OWSTIMER.exe if you&#39;re doing timer jobs).</p>
<p>So the addition in <strong>Microsoft.SharePoint.targets</strong> is:</p>
<p><font color="#0000ff" size="2"><font color="#0000ff" size="2"></p>
<p>&lt;</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">Target</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> </font></font><font color="#ff0000" size="2"><font color="#ff0000" size="2">Name</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">DebugInetBin</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&gt;<br />&nbsp;&nbsp;&nbsp; &lt;</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">Message</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> </font></font><font color="#ff0000" size="2"><font color="#ff0000" size="2">Text</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Building to Bin Directory...</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> </font></font><font color="#ff0000" size="2"><font color="#ff0000" size="2">Importance</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">high</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">Message</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> </font></font><font color="#ff0000" size="2"><font color="#ff0000" size="2">Text</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Uninstalling assembly in GAC and recycling app pool</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> </font></font><font color="#ff0000" size="2"><font color="#ff0000" size="2">Importance</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">high</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">Exec</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> </font></font><font color="#ff0000" size="2"><font color="#ff0000" size="2">Command</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">$(GACUTIL) -u $(AssemblyName)</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">Exec</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> </font></font><font color="#ff0000" size="2"><font color="#ff0000" size="2">Command</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=</font></font><font size="2">&#39;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">$(ISSAPP_SCRIPT) recycle APPPOOL &quot;SharePoint - 80&quot;</font></font><font size="2">&#39;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">Message</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> </font></font><font color="#ff0000" size="2"><font color="#ff0000" size="2">Text</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=</font></font><font size="2">&quot;&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> </font></font><font color="#ff0000" size="2"><font color="#ff0000" size="2">Importance</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">high</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> /&gt;<br />&lt;/</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">Target</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&gt;</p>
<p></font></font></p>
<p>In addition, the project file&nbsp;(.csproj) needs to modified as well:</p>
<ol>
<li>
<div>Add the following <strong>PropertyGroup<br /></strong><font color="#0000ff">&lt;</font><font color="#a31515" size="2"><font color="#a31515" size="2">PropertyGroup</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> </font></font><font color="#ff0000" size="2"><font color="#ff0000" size="2">Condition</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> &#39;$(Configuration)|$(Platform)&#39; == &#39;DebugInetBin|AnyCPU&#39; </font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&gt;<br />&nbsp;&nbsp;&nbsp; &lt;</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">DebugSymbols</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&gt;</font></font><font size="2">true</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&lt;/</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">DebugSymbols</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&gt;<br />&nbsp;&nbsp;&nbsp; &lt;</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">OutputPath</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&gt;</font></font><font size="2">C:inetpubwwwrootin</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&lt;/</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">OutputPath</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&gt;</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2"><br />&lt;/</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">PropertyGroup</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&gt;</font></font></div>
</li>
<li>
<div>Add the following <strong>CallTarget</strong> to the <strong>AfterBuild</strong>:<br /><font color="#0000ff" size="2"><font color="#0000ff" size="2">&lt;</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">CallTarget</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> </font></font><font color="#ff0000" size="2"><font color="#ff0000" size="2">Targets</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">DebugInetBin</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> </font></font><font color="#ff0000" size="2"><font color="#ff0000" size="2">Condition</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=</font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> &#39;$(Configuration)|$(Platform)&#39; == &#39;DebugInetBin|AnyCPU&#39; </font></font><font size="2">&quot;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> /&gt;</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2"></div>
</li>
</ol>
<p></font></font></p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wpowell/2008/11/21/stsdev-debugging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>STSDEV and Windows Server 2008</title>
		<link>http://vspug.com/wpowell/2008/11/14/stsdev-and-windows-server-2008/</link>
		<comments>http://vspug.com/wpowell/2008/11/14/stsdev-and-windows-server-2008/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 19:43:00 +0000</pubDate>
		<dc:creator>wpowell</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[If you are using STSDEV and Windows Server 2008, the DebugRefreshAssemblyInGac target will be broken.
The reason is C:Windowssystem32iisapp.vbs has been replaced by C:Windowssystem32inetsrvappcmd.exe.
In order to fix this the Microsoft.SharePoint.Targets file needs the following modifications:


In the Property Group element, replace:
&#60;ISSAPP_SCRIPT&#62;CSCRIPT.EXE C:WINDOWSsystem32iisapp.vbs&#60;/ISSAPP_SCRIPT&#62;with:&#60;ISSAPP_SCRIPT&#62;c:windowssystem32inetsrvappcmd.exe&#60;/ISSAPP_SCRIPT&#62;



In the DebugRefreshAssemblyInGac target, replace:
&#60;Exec Command=&#39;$(ISSAPP_SCRIPT) /a &#34;AppPoolName&#34; /r&#39; /&#62;with:&#60;Exec Command=&#39;$(ISSAPP_SCRIPT) recycle APPPOOL &#34;AppPoolName&#34;&#39; /&#62;




Hope this [...]]]></description>
			<content:encoded><![CDATA[<p>If you are using STSDEV and Windows Server 2008, the <strong>DebugRefreshAssemblyInGac</strong> target will be broken.</p>
<p>The reason is <strong>C:Windowssystem32</strong><font size="2"><strong>iisapp.vbs </strong>has been replaced by <strong>C:Windowssystem32inetsrvappcmd.exe</strong>.</font></p>
<p><font size="2">In order to fix this the <strong>Microsoft.SharePoint.Targets</strong> file needs the following modifications:</font></p>
<ul>
<li>
<div><font size="2">In the Property Group element, replace:<br /><font color="#0000ff" size="2"><font color="#0000ff" size="2"></p>
<p>&lt;</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">ISSAPP_SCRIPT</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&gt;</font></font><font size="2">CSCRIPT.EXE C:WINDOWSsystem32iisapp.vbs</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&lt;/</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">ISSAPP_SCRIPT</font></font><font color="#0000ff" size="2"><font color="#000000" size="2">&gt;<br />with:<br /><font color="#0000ff" size="2"><font color="#0000ff" size="2">&lt;</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">ISSAPP_SCRIPT</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&gt;</font></font><font color="#000000" size="2">c:windowssystem32inetsrvappcmd.exe</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&lt;/</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">ISSAPP_SCRIPT</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&gt;</font></font></font></font></p>
<p></font></div>
</li>
<li>
<div><font size="2"><font color="#0000ff" size="2"><font color="#000000" size="2"><font color="#0000ff" size="2"><font color="#000000" size="2">In the <strong>DebugRefreshAssemblyInGac</strong> target, replace:<br /><font color="#0000ff" size="2"><font color="#0000ff" size="2"></font></font></font></font></font></font><font color="#0000ff" size="2"><font color="#000000" size="2"><font color="#0000ff" size="2"><font color="#000000" size="2"><font color="#0000ff" size="2"><font color="#0000ff" size="2"></p>
<p>&lt;</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">Exec</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> </font></font><font color="#ff0000" size="2"><font color="#ff0000" size="2">Command</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=</font></font><font color="#000000" size="2">&#39;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">$(ISSAPP_SCRIPT) /a <em>&quot;AppPoolName&quot;</em> /r</font></font><font color="#000000" size="2">&#39;</font><font color="#0000ff" size="2"><font color="#000000" size="2"> /&gt;<br />with:<br /><font color="#0000ff" size="2"><font color="#0000ff" size="2">&lt;</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">Exec</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> </font></font><font color="#ff0000" size="2"><font color="#ff0000" size="2">Command</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=</font></font><font color="#000000" size="2">&#39;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">$(ISSAPP_SCRIPT) recycle APPPOOL &quot;<em>AppPoolName</em>&quot;</font></font><font color="#000000" size="2">&#39;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2"> /&gt;</font></font></font></font></p>
<p></font></font></font></font></font></div>
</li>
</ul>
<p><font size="2"><font color="#0000ff" size="2"><font color="#000000" size="2"><font color="#0000ff" size="2"><font color="#0000ff" size="2"></font></font></font></font></font><font size="2"><font color="#0000ff" size="2"><font color="#000000" size="2"><font color="#0000ff" size="2"><font color="#0000ff" size="2"></p>
<p><font color="#0000ff" size="2"><font color="#0000ff" size="2"><font color="#0000ff" size="2"><font color="#000000" size="2">Hope this helps somebody out.</p>
<p></font></font></font></font></font></font></font></font></font></p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wpowell/2008/11/14/stsdev-and-windows-server-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MOSS, Windows Server 2008 and SQL 2008 Gotcha</title>
		<link>http://vspug.com/wpowell/2008/11/12/moss-windows-server-2008-and-sql-2008-gotcha/</link>
		<comments>http://vspug.com/wpowell/2008/11/12/moss-windows-server-2008-and-sql-2008-gotcha/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 17:44:00 +0000</pubDate>
		<dc:creator>wpowell</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[Receiving:
11/12/2008 10:07:08&#160; 7&#160; ERR&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; An exception of type System.Runtime.InteropServices.COMException was thrown.&#160; Additional exception information: Unknown error (0x80005000)System.Runtime.InteropServices.COMException (0x80005000): Unknown error (0x80005000)&#160;&#160; at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)&#160;&#160; at System.DirectoryServices.DirectoryEntry.Exists(String path)&#160;&#160; at Microsoft.SharePoint.Administration.SPIisWebSite.GetUnusedInstanceId(Int32 preferredInstanceId)&#160;&#160; at Microsoft.SharePoint.Administration.SPWebApplication.CreateIisSettingsObject(String iisServerComment, Boolean secureSocketsLayer, String iisHostHeader, Int32 iisPort, Boolean iisAllowAnonymous, Boolean iisEnsureNTLM, DirectoryInfo iisRootDirectory, SPFarm farm)&#160;&#160; at Microsoft.SharePoint.Administration.SPWebApplication.CreateDefaultInstance(SPWebService service, Guid id, String applicationPoolId, IdentityType [...]]]></description>
			<content:encoded><![CDATA[<p>Receiving:</p>
<p>11/12/2008 10:07:08&nbsp; 7&nbsp; ERR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; An exception of type System.Runtime.InteropServices.COMException was thrown.&nbsp; Additional exception information: Unknown error (0x80005000)<br />System.Runtime.InteropServices.COMException (0x80005000): Unknown error (0x80005000)<br />&nbsp;&nbsp; at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)<br />&nbsp;&nbsp; at System.DirectoryServices.DirectoryEntry.Exists(String path)<br />&nbsp;&nbsp; at Microsoft.SharePoint.Administration.SPIisWebSite.GetUnusedInstanceId(Int32 preferredInstanceId)<br />&nbsp;&nbsp; at Microsoft.SharePoint.Administration.SPWebApplication.CreateIisSettingsObject(String iisServerComment, Boolean secureSocketsLayer, String iisHostHeader, Int32 iisPort, Boolean iisAllowAnonymous, Boolean iisEnsureNTLM, DirectoryInfo iisRootDirectory, SPFarm farm)<br />&nbsp;&nbsp; at Microsoft.SharePoint.Administration.SPWebApplication.CreateDefaultInstance(SPWebService service, Guid id, String applicationPoolId, IdentityType identityType, String applicationPoolUsername, SecureString applicationPoolPassword, String iisServerComment, Boolean secureSocketsLayer, String iisHostHeader, Int32 iisPort, Boolean iisAllowAnonymous, DirectoryInfo iisRootDirectory, Uri defaultZoneUri, Boolean iisEnsureNTLM, Boolean createDatabase, String databaseServer, String databaseName, String databaseUsername, String databasePassword, SPSearchServiceInstance searchServiceInstance, Boolean isPaired, Boolean autoActivateFeatures)<br />&nbsp;&nbsp; at Microsoft.SharePoint.Administration.SPAdministrationWebApplication.CreateDefaultInstance(SqlConnectionStringBuilder administrationContentDatabase, SPWebService adminService, IdentityType identityType, String farmUser, SecureString farmPassword)<br />&nbsp;&nbsp; at Microsoft.SharePoint.Administration.SPFarm.CreateAdministrationWebService(SqlConnectionStringBuilder administrationContentDatabase, IdentityType identityType, String farmUser, SecureString farmPassword)<br />&nbsp;&nbsp; at Microsoft.SharePoint.Administration.SPFarm.CreateBasicServices(SqlConnectionStringBuilder administrationContentDatabase, IdentityType identityType, String farmUser, SecureString farmPassword)<br />&nbsp;&nbsp; at Microsoft.SharePoint.Administration.SPFarm.Create(SqlConnectionStringBuilder configurationDatabase, SqlConnectionStringBuilder administrationContentDatabase, IdentityType identityType, String farmUser, SecureString farmPassword)<br />&nbsp;&nbsp; at Microsoft.SharePoint.Administration.SPFarm.Create(SqlConnectionStringBuilder configurationDatabase, SqlConnectionStringBuilder administrationContentDatabase, String farmUser, SecureString farmPassword)<br />&nbsp;&nbsp; at Microsoft.SharePoint.PostSetupConfiguration.ConfigurationDatabaseTask.CreateOrConnectConfigDb()<br />&nbsp;&nbsp; at Microsoft.SharePoint.PostSetupConfiguration.ConfigurationDatabaseTask.Run()<br />&nbsp;&nbsp; at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()</p>
<p>&nbsp;Not the most intuitive message. Is it an AD problem? Is it an IIS problem? Is it a SQL problem?</p>
<p>The answer it turns out is simple and it is an IIS problem.</p>
<p>Make sure you have added <strong>IIS 6 Metabase Compatibility</strong> to the Installed Role Services for the Web Server (IIS) Role.</p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wpowell/2008/11/12/moss-windows-server-2008-and-sql-2008-gotcha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows SharePoint Services 3.0 Tools: Visual Studio 2005 Extensions, Version 1.1 CTP Released</title>
		<link>http://vspug.com/wpowell/2007/08/22/windows-sharepoint-services-3-0-tools-visual-studio-2005-extensions-version-1-1-ctp-released/</link>
		<comments>http://vspug.com/wpowell/2007/08/22/windows-sharepoint-services-3-0-tools-visual-studio-2005-extensions-version-1-1-ctp-released/#comments</comments>
		<pubDate>Wed, 22 Aug 2007 21:23:00 +0000</pubDate>
		<dc:creator>wpowell</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[So after lampooning the initial release of the Visual Studio Extensions For Windows SharePoint Services (and kicking it repeatedly when it was down). 
It looks like MS has release an updated version. According the release notes, it addresses some of the short-comings I had an issue with.
http://www.microsoft.com/downloads/details.aspx?FamilyID=3e1dcccd-1cca-433a-bb4d-97b96bf7ab63&#38;displaylang=en
&#160;
]]></description>
			<content:encoded><![CDATA[<p>So after lampooning the initial release of the Visual Studio Extensions For Windows SharePoint Services (and kicking it repeatedly when it was down). </p>
<p>It looks like MS has release an updated version. According the release notes, it addresses some of the short-comings I had an issue with.</p>
<p><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=3e1dcccd-1cca-433a-bb4d-97b96bf7ab63&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=3e1dcccd-1cca-433a-bb4d-97b96bf7ab63&amp;displaylang=en</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wpowell/2007/08/22/windows-sharepoint-services-3-0-tools-visual-studio-2005-extensions-version-1-1-ctp-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MOSS &#8211; Visual Studio Development (What works for me&#8230;)</title>
		<link>http://vspug.com/wpowell/2007/08/14/moss-visual-studio-development-what-works-for-me/</link>
		<comments>http://vspug.com/wpowell/2007/08/14/moss-visual-studio-development-what-works-for-me/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 23:38:00 +0000</pubDate>
		<dc:creator>wpowell</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[So I&#39;ve played around with the Visual Studio 2005 extensions for Windows SharePoint Services, v1.0&#160;for quite some time now. While the concept is extremely useful, the release is not. It has MANY problems. So I&#39;ve looked for different workflows for developing against MOSS. The following tools enable me to create a fairly robust MOSS development [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#39;ve played around with the <a href="http://www.microsoft.com/downloads/details.aspx?familyid=19f21e5e-b715-4f0c-b959-8c6dcbdc1057&amp;displaylang=en">Visual Studio 2005 extensions for Windows SharePoint Services, v1.0</a>&nbsp;for quite some time now. While the concept is extremely useful, the release is not. It has MANY problems. So I&#39;ve looked for different workflows for developing against MOSS. The following tools enable me to create a fairly robust MOSS development environment, without the headache related to the MS VSeWSS tool. Can&#39;t wait until they update that!</p>
<p>The process defined works great for me. For everyone else, mileage may vary. However, I am super interested in any other ideas. I&#39;m always looking for ways to increase my productivity.</p>
<ol>
<li>
<div>I use a Virtual Machine (who doesn&#39;t?)</div>
</li>
<li>
<div>I use the following package: <span class="ProjectTitleLabel" id="ctl00_ctl00_ctl00_PageHeader_ProjectTitleControl1_TitleLabel"><font color="#800080">SharePoint Visual Studio Project Templates</font></span> (<a href="http://www.codeplex.com/sptemplateland">http://www.codeplex.com/sptemplateland</a>). These are from <a href="http://blog.thekid.me.uk/default.aspx">TheKid</a>, who has VERY excellent posts. Basically, theses allow me to develop MOSS solutions (wsp) in Visual Studio. By using these, I can get over certain limitations of the VSeWSS package.</div>
</li>
<li>
<div>I also use the VS Command Shell (<a href="http://www.codeplex.com/VSCmdShell">http://www.codeplex.com/VSCmdShell</a>). This enables either a standard console window or a PowerShell window to be embedded within Visual Studio.<br /><strong><em>NOTE: There is a problem with the PowerShell integration. I&#39;ll make <strike>a seperate post</strike> an update on how to fix it.</p>
<p></em></strong>This tool makes deployment, installation, retraction, etc.&nbsp;a snap. I modified the package in step 2 to build installation and removal batch files. So with the console window in Visual Studio already, I can just run the bat file from it. Create an Internet Explorer window in Visual Studio, and I never need to leave Visual Studio to do my development. <img src="/emoticons/emotion-1.gif" alt="Smile" /></p>
<p><strong><em><img title="VSCommandShell Screen Shot" style="WIDTH:1056px;HEIGHT:564px;" height="564" alt="VSCommandShell Screen Shot" src="/photos/wpowell/images/4305/original.aspx" width="1056" /></em></strong></div>
</li>
</ol>
<p><strong>UPDATE:<br />How to fix the PowerShell intergration</strong></p>
<ol>
<li>
<div>Download the updated source from <a href="http://www.codeplex.com/VSCmdShell/SourceControl/DownloadSourceCode.aspx?changeSetId=22617" target="_blank">here</a>. It fixes the friendly name portion, which was the issue.</div>
</li>
<li>
<div>Open the source in Visual Studio and build the project.</div>
</li>
<li>
<div>Assuming you have already installed the 1.1 build, replace the <strong>Microsoft.VSPowerToys.VSCmdShell.PowerShellHost.dll</strong> in the install directory from the copy in the build directory.</div>
</li>
</ol>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wpowell/2007/08/14/moss-visual-studio-development-what-works-for-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Validate Microsoft Forefront for SharePoint Installation</title>
		<link>http://vspug.com/wpowell/2007/08/11/validate-microsoft-forefront-for-sharepoint-installation/</link>
		<comments>http://vspug.com/wpowell/2007/08/11/validate-microsoft-forefront-for-sharepoint-installation/#comments</comments>
		<pubDate>Sat, 11 Aug 2007 19:18:00 +0000</pubDate>
		<dc:creator>wpowell</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[The following procedure can be used to test whether an installation of Microsoft Forefront is valid.


In Central Admin -&#62; Operations -&#62; Blocked file types, temporarily remove the com extension.


Open Notepad and add the following text to a new text&#160;file:
X5O!P%@AP[4PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*



Save this file as EICAR.COM


Upload to a document library and if everything is installed correctly, you will [...]]]></description>
			<content:encoded><![CDATA[<p>The following procedure can be used to test whether an installation of Microsoft Forefront is valid.</p>
<ol>
<li>
<div>In Central Admin -&gt; Operations -&gt; Blocked file types, temporarily remove the <strong>com</strong> extension.</div>
</li>
<li>
<div>Open <strong>Notepad</strong> and add the following text to a new text&nbsp;file:
<pre>X5O!P%@AP[4PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*</pre>
</div>
</li>
<li>
<div>Save this file as <strong>EICAR.COM</strong></div>
</li>
<li>
<div>Upload to a document library and if everything is installed correctly, you will get this:<br /><img title="Microsoft Forefront Validation Screenshot" style="WIDTH:612px;HEIGHT:158px;" height="158" alt="Microsoft Forefront Validation Screenshot" src="/photos/wpowell/images/4206/original.aspx" width="612" /></div>
</li>
<li>
<div>Add the&nbsp;extension&nbsp;<strong>com</strong>&nbsp;back to the blocked file types.</div>
</li>
</ol>
<p>If you&nbsp;don&#39;t&nbsp;see the above screen, then your installation of Forefront isn&#39;t working.<br />&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wpowell/2007/08/11/validate-microsoft-forefront-for-sharepoint-installation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PDF Document Type Icon in MOSS</title>
		<link>http://vspug.com/wpowell/2007/08/09/pdf-document-type-icon-in-moss/</link>
		<comments>http://vspug.com/wpowell/2007/08/09/pdf-document-type-icon-in-moss/#comments</comments>
		<pubDate>Thu, 09 Aug 2007 22:54:00 +0000</pubDate>
		<dc:creator>wpowell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[MOSS doesn't install an icon for PDF files by default. It simply shows a generic white paper icon.
This is my procedure for fixing this issue:


Download an appropriate icon for pdf document types.


This is the icon from Adobe.


Save to TEMPLATE\IMAGES directory. (DEFAULT: C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\template\images)




Open the file docicon.xml. (DEFAULT: C:\Program Files\Common Files\Microsoft Shared\web [...]]]></description>
			<content:encoded><![CDATA[<p>MOSS doesn't install an icon for PDF files by default. It simply shows a generic white paper icon.<br />
This is my procedure for fixing this issue:</p>
<ol>
<li>
<div>Download an appropriate icon for pdf document types.</div>
<ol>
<li>
<div><a title="This" href="http://www.adobe.com/misc/linking.html#pdficon" target="_blank">This</a> is the icon from Adobe.</div>
</li>
<li>
<div>Save to TEMPLATE\IMAGES directory. (DEFAULT: C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\template\images)</div>
</li>
</ol>
</li>
<li>
<div>Open the file <strong>docicon.xml</strong>. (DEFAULT: C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\template\xml\docicon.xml)</div>
</li>
<li>
<div>Add a new <strong>Mapping</strong> element to the <strong>ByExtension</strong> element.<br />
&lt;Mapping Key="pdf" Value="pdficon_small.gif" /&gt;<br />
<strong><em>NOTE:</em></strong> Be sure to change <em><strong>pdficon_small.gif</strong> </em>to whatever image you downloaded to represent pdf documents.</div>
</li>
<li>
<div>Save the edited <strong>docicon.xml</strong> file.</div>
</li>
<li>
<div>Restart IIS (<strong>iisreset /noforce</strong>).</div>
</li>
</ol>
<p>You should now see the PDF icons for all PDF documents in the portal, including search results.</p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wpowell/2007/08/09/pdf-document-type-icon-in-moss/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MOSS Usage Log Processing File parsing</title>
		<link>http://vspug.com/wpowell/2007/06/22/moss-usage-log-processing-file-processing/</link>
		<comments>http://vspug.com/wpowell/2007/06/22/moss-usage-log-processing-file-processing/#comments</comments>
		<pubDate>Sat, 23 Jun 2007 04:06:00 +0000</pubDate>
		<dc:creator>wpowell</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[Parsing STS logs in SharePoint 2003 was fairly well documented. However, that is not the case yet in 2007. There is now some content about log parsing in 2007. It is written in C++, so this should still be useful. Given the number of libraries I&#39;ve seen on the net referencing this code, I assume [...]]]></description>
			<content:encoded><![CDATA[<p>Parsing STS logs in SharePoint 2003 was fairly well <a title="documented" href="http://msdn2.microsoft.com/en-us/library/ms916815.aspx" target="_blank">documented</a>. <strike>However, that is not the case yet in 2007</strike>. There is now some <a title="content" href="http://msdn2.microsoft.com/en-us/library/bb814929.aspx" target="_blank">content</a> about log parsing in 2007. It is written in C++, so this should still be useful. Given the number of libraries I&#39;ve seen on the net referencing this code, I assume that is the case.</p>
<p>First, there is an additional 300 bytes added to the head of each log file. The additional 300 bytes contains the text &quot;Windows SharePoint Services HTTP log file&quot; followed by space characters making up the difference. You can simply ignore these.</p>
<p>Secondly, the header of the each entry appears to have grown as well, including the ordering of the definition.</p>
<p><strong>Header Data (50 bytes)</strong></p>
<table cellspacing="0" cellpadding="3">
<tr>
<th class="  ">Field</th>
<th class="  ">Bytes</th>
<th class="  ">Type</th>
</tr>
<tr>
<td class="  ">
<p>Unused</p>
</td>
<td class="  ">
<p>11&nbsp;bytes</p>
</td>
<td class="  ">
<p>?</p>
</td>
</tr>
<tr>
<td class="  ">
<p>Site Url (length)</p>
</td>
<td class="  ">
<p>2 bytes</p>
</td>
<td class="  ">
<p>ushort</p>
</td>
</tr>
<tr>
<td class="  ">
<p>Web (length)</p>
</td>
<td class="  ">
<p>2 bytes</p>
</td>
<td class="  ">
<p>ushort</p>
</td>
</tr>
<tr>
<td class="  ">
<p>Doc (length)</p>
</td>
<td class="  ">
<p>2 bytes</p>
</td>
<td class="  ">
<p>ushort</p>
</td>
</tr>
<tr>
<td class="  ">
<p>Unknown</p>
</td>
<td class="  ">
<p>2 bytes</p>
</td>
<td class="  ">
<p>?</p>
</td>
</tr>
<tr>
<td class="  ">
<p>Bytes (data)</p>
</td>
<td class="  ">
<p>4 bytes</p>
</td>
<td class="  ">
<p>uint</p>
</td>
</tr>
<tr>
<td class="  ">
<p>HTTP Status (data)</p>
</td>
<td class="  ">
<p>2 bytes</p>
</td>
<td class="  ">
<p>ushort</p>
</td>
</tr>
<tr>
<td class="  ">
<p>Username (length)</p>
</td>
<td class="  ">
<p>2 bytes</p>
</td>
<td class="  ">
<p>ushort</p>
</td>
</tr>
<tr>
<td class="  ">
<p>QueryString (length)</p>
</td>
<td class="  ">
<p>2 bytes</p>
</td>
<td class="  ">
<p>ushort</p>
</td>
</tr>
<tr>
<td class="  ">
<p>Referral (length)</p>
</td>
<td class="  ">
<p>2 bytes</p>
</td>
<td class="  ">
<p>ushort</p>
</td>
</tr>
<tr>
<td class="  ">
<p>User Agent (length)</p>
</td>
<td class="  ">
<p>2 bytes</p>
</td>
<td class="  ">
<p>ushort</p>
</td>
</tr>
<tr>
<td class="  ">
<p>Command / Search Query (length)</p>
</td>
<td class="  ">
<p>2 bytes</p>
</td>
<td class="  ">
<p>ushort</p>
</td>
</tr>
<tr>
<td class="  ">
<p>Unused</p>
</td>
<td class="  ">
<p>15 bytes</p>
</td>
<td class="  ">
<p>?</p>
</td>
</tr>
<tr>
<td style="BACKGROUND:#cccccc;">
<p>Total</p>
</td>
<td style="BACKGROUND:#cccccc;" colspan="2">
<p>50 bytes</p>
</td>
</tr>
</table>
<p>It also appears that the actual data has changed ordering a bit as well:</p>
<ol>
<li>
<div>Site GUID</div>
</li>
<li>
<div>Timestamp</div>
</li>
<li>
<div>Site Url</div>
</li>
<li>
<div>Web</div>
</li>
<li>
<div>Doc</div>
</li>
<li>
<div>User</div>
</li>
<li>
<div>QueryString</div>
</li>
<li>
<div>Referral</div>
</li>
<li>
<div>User Agent</div>
</li>
<li>
<div>New GUID (don&#39;t know what this represents... anyone?)</div>
</li>
<li>
<div>Command / Search Query</div>
</li>
</ol>
<p>I&#39;ve created a parser in C#:</p>
<div style="BORDER-RIGHT:#999999 1px solid;BORDER-TOP:#999999 1px solid;FONT-SIZE:9px;BACKGROUND:#cccccc;OVERFLOW:auto;BORDER-LEFT:#999999 1px solid;WIDTH:100%;BORDER-BOTTOM:#999999 1px solid;FONT-FAMILY:arial;HEIGHT:400px;">
<pre class="csharpcode"><span class="kwrd">using</span> System;
<span class="kwrd">using</span> System.Collections.Generic;
<span class="kwrd">using</span> System.Data;
<span class="kwrd">using</span> System.IO;
<span class="kwrd">using</span> System.Text;
<span class="kwrd">using</span> System.Runtime.InteropServices;
<span class="kwrd">using</span> System.ComponentModel;

<span class="kwrd">namespace</span> MOSS2007LogParser
{
    <span class="kwrd">public</span> <span class="kwrd">class</span> Parser
    {
        <span class="kwrd">private</span> <span class="kwrd">const</span> <span class="kwrd">int</span> FILEHEADERLENGTH = 300;
        <span class="kwrd">private</span> <span class="kwrd">const</span> <span class="kwrd">int</span> RECORDHEADERLENGTH = 50;

        <span class="kwrd">private</span> List&lt;LogRecord&gt; _logRecords = <span class="kwrd">new</span> List&lt;LogRecord&gt;();
        <span class="kwrd">private</span> <span class="kwrd">void</span> ReadLogFile(<span class="kwrd">string</span> logFilePath)
        {
            _logRecords.Clear();

            <span class="rem">// Open a stream to the log file</span>
            <span class="rem">// I recommend using a Memory-mapped file here, as the files can grow quite large.</span>
            <span class="rem">// http://www.winterdom.com/dev/dotnet/ shows a fairly good implementation [see: FileMap]</span>
            <span class="kwrd">using</span> (Stream s = File.OpenRead(logFilePath))
            {
                BinaryReader br = <span class="kwrd">new</span> BinaryReader(s);

                <span class="rem">// Read the file header</span>
                <span class="kwrd">byte</span>[] fileHeaderData = br.ReadBytes(FILEHEADERLENGTH);

                <span class="kwrd">while</span> (s.Position &lt; s.Length)
                {
                    <span class="rem">// Read the record header array</span>
                    <span class="kwrd">byte</span>[] recordHeader = br.ReadBytes(RECORDHEADERLENGTH);
                    LogRecordHeader headerData = <span class="kwrd">new</span> LogRecordHeader(recordHeader);

                    <span class="rem">// Get the length of the current record and read the array</span>
                    <span class="kwrd">int</span> recordLength = headerData.RecordLength();
                    <span class="kwrd">byte</span>[] recordData = br.ReadBytes(recordLength);

                    _logRecords.Add(<span class="kwrd">new</span> LogRecord(headerData, recordData));
                }

                br.Close();
                s.Close();
            }
        }

        <span class="kwrd">public</span> DataSet GetLogDataSet(<span class="kwrd">string</span> logFilePath)
        {
            ReadLogFile(logFilePath);

            DataSet dsSTSLogs = <span class="kwrd">new</span> DataSet(<span class="str">&quot;dsSTSLogs&quot;</span>);
            DataTable dtSTSLogs = <span class="kwrd">new</span> DataTable(<span class="str">&quot;dtSTSLogs&quot;</span>);

            DataColumn dcTimeStamp = <span class="kwrd">new</span> DataColumn(<span class="str">&quot;TimeStamp&quot;</span>);
            DataColumn dcSiteGuid = <span class="kwrd">new</span> DataColumn(<span class="str">&quot;SiteGUID&quot;</span>);
            DataColumn dcSiteUrl = <span class="kwrd">new</span> DataColumn(<span class="str">&quot;SiteUrl&quot;</span>);
            DataColumn dcWeb = <span class="kwrd">new</span> DataColumn(<span class="str">&quot;Web&quot;</span>);
            DataColumn dcDocument = <span class="kwrd">new</span> DataColumn(<span class="str">&quot;Document&quot;</span>);
            DataColumn dcUserName = <span class="kwrd">new</span> DataColumn(<span class="str">&quot;UserName&quot;</span>);
            DataColumn dcQueryString = <span class="kwrd">new</span> DataColumn(<span class="str">&quot;QueryString&quot;</span>);
            DataColumn dcReferral = <span class="kwrd">new</span> DataColumn(<span class="str">&quot;Referral&quot;</span>);
            DataColumn dcUserAgent = <span class="kwrd">new</span> DataColumn(<span class="str">&quot;UserAgent&quot;</span>);
            DataColumn dcCommand = <span class="kwrd">new</span> DataColumn(<span class="str">&quot;Command&quot;</span>);
            DataColumn dcHttpStatus = <span class="kwrd">new</span> DataColumn(<span class="str">&quot;HttpStatus&quot;</span>);
            DataColumn dcBytesSent = <span class="kwrd">new</span> DataColumn(<span class="str">&quot;BytesSent&quot;</span>);

            dtSTSLogs.Columns.Add(dcTimeStamp);
            dtSTSLogs.Columns.Add(dcSiteGuid);
            dtSTSLogs.Columns.Add(dcSiteUrl);
            dtSTSLogs.Columns.Add(dcWeb);
            dtSTSLogs.Columns.Add(dcDocument);
            dtSTSLogs.Columns.Add(dcUserName);
            dtSTSLogs.Columns.Add(dcQueryString);
            dtSTSLogs.Columns.Add(dcReferral);
            dtSTSLogs.Columns.Add(dcUserAgent);
            dtSTSLogs.Columns.Add(dcCommand);
            dtSTSLogs.Columns.Add(dcHttpStatus);
            dtSTSLogs.Columns.Add(dcBytesSent);

            dsSTSLogs.Tables.Add(dtSTSLogs);

            <span class="kwrd">foreach</span> (LogRecord record <span class="kwrd">in</span> _logRecords)
            {
                DataRow drRecord = dtSTSLogs.NewRow();

                drRecord[<span class="str">&quot;TimeStamp&quot;</span>] = record.TimeStamp;
                drRecord[<span class="str">&quot;SiteGUID&quot;</span>] = record.SiteGUID;
                drRecord[<span class="str">&quot;SiteUrl&quot;</span>] = record.SiteUrl;
                drRecord[<span class="str">&quot;Web&quot;</span>] = record.Web;
                drRecord[<span class="str">&quot;Document&quot;</span>] = record.Document;
                drRecord[<span class="str">&quot;UserName&quot;</span>] = record.UserName;
                drRecord[<span class="str">&quot;QueryString&quot;</span>] = record.QueryString;
                drRecord[<span class="str">&quot;Referral&quot;</span>] = record.Referral;
                drRecord[<span class="str">&quot;UserAgent&quot;</span>] = record.UserAgent;
                drRecord[<span class="str">&quot;Command&quot;</span>] = record.Command;
                drRecord[<span class="str">&quot;HttpStatus&quot;</span>] = record.Status;
                drRecord[<span class="str">&quot;BytesSent&quot;</span>] = record.BytesSent;

                dtSTSLogs.Rows.Add(drRecord);
            }

            <span class="kwrd">return</span> dsSTSLogs;
        }
        <span class="kwrd">public</span> <span class="kwrd">void</span> ConvertToCSVFile(<span class="kwrd">string</span> logFilePath)
        {
            <span class="kwrd">string</span> defaultPath = Path.Combine(
                Path.GetDirectoryName(logFilePath),
                Path.GetFileNameWithoutExtension(logFilePath)) + <span class="str">&quot;.csv&quot;</span>;

            ConvertToCSVFile(logFilePath, defaultPath);
        }

        <span class="kwrd">public</span> <span class="kwrd">void</span> ConvertToCSVFile(<span class="kwrd">string</span> logFilePath, <span class="kwrd">string</span> csvFilePath)
        {
            ReadLogFile(logFilePath);

            <span class="kwrd">string</span> recordLineFormat = <span class="str">&quot;{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11}&quot;</span>;

            <span class="kwrd">using</span> (StreamWriter sw = File.CreateText(csvFilePath))
            {
                <span class="kwrd">foreach</span> (LogRecord record <span class="kwrd">in</span> _logRecords)
                {
                    sw.WriteLine(String.Format(recordLineFormat,
                        record.TimeStamp,
                        record.SiteGUID,
                        record.SiteUrl,
                        record.Web,
                        record.Document,
                        record.UserName,
                        record.QueryString,
                        record.Referral,
                        record.UserAgent,
                        record.Command,
                        record.BytesSent,
                        record.Status));
                }

                sw.Close();
            }
        }
    }

    <span class="kwrd">public</span> <span class="kwrd">class</span> LogRecordHeader
    {
        <span class="kwrd">public</span> <span class="kwrd">const</span> <span class="kwrd">int</span> STANDARD_GUID_LENGTH = 36;
        <span class="kwrd">public</span> <span class="kwrd">const</span> <span class="kwrd">int</span> STANDARD_TIMESTAMP_LENGTH = 8;

        <span class="kwrd">private</span> <span class="kwrd">byte</span>[] _recordHeader;

        <span class="kwrd">private</span> <span class="kwrd">int</span> _siteUrlLength;
        <span class="kwrd">public</span> <span class="kwrd">int</span> SiteUrlLength
        {
            get { <span class="kwrd">return</span> _siteUrlLength; }
        }

        <span class="kwrd">private</span> <span class="kwrd">int</span> _webLength;
        <span class="kwrd">public</span> <span class="kwrd">int</span> WebLength
        {
            get { <span class="kwrd">return</span> _webLength; }
        }

        <span class="kwrd">private</span> <span class="kwrd">int</span> _docLength;
        <span class="kwrd">public</span> <span class="kwrd">int</span> DocLength
        {
            get { <span class="kwrd">return</span> _docLength; }
        }

        <span class="kwrd">private</span> <span class="kwrd">int</span> _userNameLength;
        <span class="kwrd">public</span> <span class="kwrd">int</span> UserNameLength
        {
            get { <span class="kwrd">return</span> _userNameLength; }
        }

        <span class="kwrd">private</span> <span class="kwrd">long</span> _bytesSent;
        <span class="kwrd">public</span> <span class="kwrd">long</span> BytesSent
        {
            get { <span class="kwrd">return</span> _bytesSent; }
        }

        <span class="kwrd">private</span> <span class="kwrd">int</span> _httpStatus;
        <span class="kwrd">public</span> <span class="kwrd">int</span> HttpStatus
        {
            get { <span class="kwrd">return</span> _httpStatus; }
        }

        <span class="kwrd">private</span> <span class="kwrd">int</span> _queryStringLength;
        <span class="kwrd">public</span> <span class="kwrd">int</span> QueryStringLength
        {
            get { <span class="kwrd">return</span> _queryStringLength; }
        }

        <span class="kwrd">private</span> <span class="kwrd">int</span> _referralLength;
        <span class="kwrd">public</span> <span class="kwrd">int</span> ReferralLength
        {
            get { <span class="kwrd">return</span> _referralLength; }
        }

        <span class="kwrd">private</span> <span class="kwrd">int</span> _userAgentLength;
        <span class="kwrd">public</span> <span class="kwrd">int</span> UserAgentLength
        {
            get { <span class="kwrd">return</span> _userAgentLength; }
        }

        <span class="kwrd">private</span> <span class="kwrd">int</span> _commandLength;
        <span class="kwrd">public</span> <span class="kwrd">int</span> CommandLength
        {
            get { <span class="kwrd">return</span> _commandLength; }
        }

        <span class="kwrd">public</span> LogRecordHeader(<span class="kwrd">byte</span>[] recordHeader)
        {
            <span class="kwrd">this</span>._recordHeader = recordHeader;
            <span class="kwrd">this</span>._siteUrlLength = BitConverter.ToUInt16(recordHeader, SITEURL_OFFSET);
            <span class="kwrd">this</span>._webLength = BitConverter.ToUInt16(recordHeader, WEB_OFFSET);
            <span class="kwrd">this</span>._docLength = BitConverter.ToUInt16(recordHeader, DOC_OFFSET);
            <span class="kwrd">this</span>._bytesSent = BitConverter.ToUInt32(recordHeader, BYTESSENT_OFFSET);
            <span class="kwrd">this</span>._httpStatus = BitConverter.ToUInt16(recordHeader, HTTPSTATUS_OFFSET);
            <span class="kwrd">this</span>._userNameLength = BitConverter.ToUInt16(recordHeader, USERNAME_OFFSET);
            <span class="kwrd">this</span>._queryStringLength = BitConverter.ToUInt16(recordHeader, QUERYSTRING_OFFSET);
            <span class="kwrd">this</span>._referralLength = BitConverter.ToUInt16(recordHeader, REFERRAL_OFFSET);
            <span class="kwrd">this</span>._userAgentLength = BitConverter.ToUInt16(recordHeader, USERAGENT_OFFSET);
            <span class="kwrd">this</span>._commandLength = BitConverter.ToUInt16(recordHeader, COMMAND_OFFSET);
        }

        <span class="kwrd">private</span> <span class="kwrd">const</span> <span class="kwrd">int</span> SITEURL_OFFSET = 12;
        <span class="kwrd">private</span> <span class="kwrd">const</span> <span class="kwrd">int</span> WEB_OFFSET = 14;
        <span class="kwrd">private</span> <span class="kwrd">const</span> <span class="kwrd">int</span> DOC_OFFSET = 16;
        <span class="kwrd">private</span> <span class="kwrd">const</span> <span class="kwrd">int</span> BYTESSENT_OFFSET = 20;
        <span class="kwrd">private</span> <span class="kwrd">const</span> <span class="kwrd">int</span> HTTPSTATUS_OFFSET = 24;
        <span class="kwrd">private</span> <span class="kwrd">const</span> <span class="kwrd">int</span> USERNAME_OFFSET = 26;
        <span class="kwrd">private</span> <span class="kwrd">const</span> <span class="kwrd">int</span> QUERYSTRING_OFFSET = 28;
        <span class="kwrd">private</span> <span class="kwrd">const</span> <span class="kwrd">int</span> REFERRAL_OFFSET = 30;
        <span class="kwrd">private</span> <span class="kwrd">const</span> <span class="kwrd">int</span> USERAGENT_OFFSET = 32;
        <span class="kwrd">private</span> <span class="kwrd">const</span> <span class="kwrd">int</span> COMMAND_OFFSET = 34;

        <span class="kwrd">public</span> <span class="kwrd">int</span> RecordLength()
        {
            <span class="kwrd">return</span>  STANDARD_GUID_LENGTH + 1 +
                    STANDARD_TIMESTAMP_LENGTH + 1 +
                    SiteUrlLength + 1 +
                    WebLength + 1 +
                    DocLength + 1 +
                    UserNameLength + 1 +
                    QueryStringLength + 1 +
                    ReferralLength + 1 +
                    UserAgentLength + 1 +
                    STANDARD_GUID_LENGTH + 1 +
                    CommandLength + 1;
        }
    }

    <span class="kwrd">public</span> <span class="kwrd">class</span> LogRecord
    {
        <span class="kwrd">private</span> <span class="kwrd">string</span> _siteGuid;
        <span class="kwrd">public</span> <span class="kwrd">string</span> SiteGUID
        {
            get { <span class="kwrd">return</span> _siteGuid; }
        }

        <span class="kwrd">private</span> <span class="kwrd">string</span> _timeStamp;
        <span class="kwrd">public</span> <span class="kwrd">string</span> TimeStamp
        {
            get { <span class="kwrd">return</span> _timeStamp; }
        }

        <span class="kwrd">private</span> <span class="kwrd">string</span> _siteUrl;
        <span class="kwrd">public</span> <span class="kwrd">string</span> SiteUrl
        {
            get { <span class="kwrd">return</span> _siteUrl; }
        }

        <span class="kwrd">private</span> <span class="kwrd">string</span> _web;
        <span class="kwrd">public</span> <span class="kwrd">string</span> Web
        {
            get { <span class="kwrd">return</span> _web; }
        }

        <span class="kwrd">private</span> <span class="kwrd">string</span> _document;
        <span class="kwrd">public</span> <span class="kwrd">string</span> Document
        {
            get { <span class="kwrd">return</span> _document; }
        }

        <span class="kwrd">private</span> <span class="kwrd">string</span> _userName;
        <span class="kwrd">public</span> <span class="kwrd">string</span> UserName
        {
            get { <span class="kwrd">return</span> _userName; }
        }

        <span class="kwrd">private</span> <span class="kwrd">string</span> _queryString;
        <span class="kwrd">public</span> <span class="kwrd">string</span> QueryString
        {
            get { <span class="kwrd">return</span> _queryString; }
        }

        <span class="kwrd">private</span> <span class="kwrd">string</span> _referral;
        <span class="kwrd">public</span> <span class="kwrd">string</span> Referral
        {
            get { <span class="kwrd">return</span> _referral; }
        }

        <span class="kwrd">private</span> <span class="kwrd">string</span> _userAgent;
        <span class="kwrd">public</span> <span class="kwrd">string</span> UserAgent
        {
            get { <span class="kwrd">return</span> _userAgent; }
        }

        <span class="kwrd">private</span> <span class="kwrd">string</span> _command;
        <span class="kwrd">public</span> <span class="kwrd">string</span> Command
        {
            get { <span class="kwrd">return</span> _command; }
        }

        <span class="kwrd">private</span> <span class="kwrd">int</span> _status;
        <span class="kwrd">public</span> <span class="kwrd">int</span> Status
        {
            get { <span class="kwrd">return</span> _status; }
        }

        <span class="kwrd">private</span> <span class="kwrd">long</span> _bytesSent;
        <span class="kwrd">public</span> <span class="kwrd">long</span> BytesSent
        {
            get { <span class="kwrd">return</span> _bytesSent; }
        }

        <span class="kwrd">public</span> LogRecord(LogRecordHeader headerData, <span class="kwrd">byte</span>[] recordData)
        {
            <span class="kwrd">int</span> timeStampOffset = LogRecordHeader.STANDARD_GUID_LENGTH + 1;
            <span class="kwrd">int</span> siteUrlOffset = timeStampOffset + LogRecordHeader.STANDARD_TIMESTAMP_LENGTH + 1;
            <span class="kwrd">int</span> webOffset = siteUrlOffset + headerData.SiteUrlLength + 1;
            <span class="kwrd">int</span> documentOffset = webOffset + headerData.WebLength + 1;
            <span class="kwrd">int</span> userNameOffset = documentOffset + headerData.DocLength + 1;
            <span class="kwrd">int</span> queryStringOffset = userNameOffset + headerData.UserNameLength + 1;
            <span class="kwrd">int</span> referralOffset = queryStringOffset + headerData.QueryStringLength + 1;
            <span class="kwrd">int</span> userAgentOffset = referralOffset + headerData.ReferralLength + 1;
            <span class="kwrd">int</span> commandOffset = userAgentOffset + headerData.UserAgentLength + LogRecordHeader.STANDARD_GUID_LENGTH + 2;

            Encoding enc = UTF8Encoding.Default;

            _siteGuid = enc.GetString(recordData, 0, LogRecordHeader.STANDARD_GUID_LENGTH);
            _timeStamp = enc.GetString(recordData, timeStampOffset, LogRecordHeader.STANDARD_TIMESTAMP_LENGTH);
            _siteUrl = enc.GetString(recordData, siteUrlOffset, headerData.SiteUrlLength);
            _web = enc.GetString(recordData, webOffset, headerData.WebLength);
            _document = enc.GetString(recordData, documentOffset, headerData.DocLength);
            _userName = enc.GetString(recordData, userNameOffset, headerData.UserNameLength);
            _queryString = enc.GetString(recordData, queryStringOffset, headerData.QueryStringLength);
            _referral = enc.GetString(recordData, referralOffset, headerData.ReferralLength);
            _userAgent = enc.GetString(recordData, userAgentOffset, headerData.UserAgentLength);
            _command = enc.GetString(recordData, commandOffset, headerData.CommandLength);
            _status = headerData.HttpStatus;
            _bytesSent = headerData.BytesSent;
        }
    }
}
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wpowell/2007/06/22/moss-usage-log-processing-file-processing/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Event ID 202 &#8211; SharePoint Portal Administration Service</title>
		<link>http://vspug.com/wpowell/2007/06/02/event-id-202-sharepoint-portal-administration-service/</link>
		<comments>http://vspug.com/wpowell/2007/06/02/event-id-202-sharepoint-portal-administration-service/#comments</comments>
		<pubDate>Sun, 03 Jun 2007 00:35:00 +0000</pubDate>
		<dc:creator>wpowell</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[We were seeing the following error in the Event Log on our MOSS WFE every 30 seconds:
&#160;



Event Type:
Error

Event Source:
SharePoint Portal Administration Service

Event Category:
None

Event ID:
202

Date:
2/22/2007

Time:
11:43:10 AM

User:
N/A

Computer:
REMOVED

Description:

Synchronization exception occurred For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.aspData:

0000: 41 00 70 00 70 00 44 00&#160;&#160; A.p.p.D.0008: 6f 00 6d 00 61 00 69 00&#160;&#160; o.m.a.i.0010: [...]]]></description>
			<content:encoded><![CDATA[<div>We were seeing the following error in the Event Log on our MOSS WFE every 30 seconds:</div>
<div>&nbsp;</div>
<div style="BORDER-RIGHT:#999999 1px solid;BORDER-TOP:#999999 1px solid;FONT-SIZE:9px;BACKGROUND:#cccccc;OVERFLOW:auto;BORDER-LEFT:#999999 1px solid;WIDTH:100%;BORDER-BOTTOM:#999999 1px solid;FONT-FAMILY:arial;HEIGHT:100px;">
<table cellspacing="0" cellpadding="0">
<tr>
<td class="  ">Event Type:
<td class="  ">Error<br />
<tr>
<td class="  ">Event Source:
<td class="  ">SharePoint Portal Administration Service<br />
<tr>
<td class="  ">Event Category:
<td class="  ">None<br />
<tr>
<td class="  ">Event ID:
<td class="  ">202<br />
<tr>
<td class="  ">Date:
<td class="  ">2/22/2007<br />
<tr>
<td class="  ">Time:
<td class="  ">11:43:10 AM<br />
<tr>
<td class="  ">User:
<td class="  ">N/A<br />
<tr>
<td class="  ">Computer:
<td class="  "><em>REMOVED</em><br />
<tr>
<td colspan="2">Description:<br />
<tr>
<td colspan="2">Synchronization exception occurred For more information, see Help and Support Center at <u><a href="http://go.microsoft.com/fwlink/events.asp"><u>http://go.microsoft.com/fwlink/events.asp</u></a></u><br />Data:<br />
<tr>
<td colspan="2">0000: 41 00 70 00 70 00 44 00&nbsp;&nbsp; A.p.p.D.<br />0008: 6f 00 6d 00 61 00 69 00&nbsp;&nbsp; o.m.a.i.<br />0010: 6e 00 3a 00 20 00 73 00&nbsp;&nbsp; n.:. .s.<br />0018: 70 00 73 00 61 00 64 00&nbsp; &nbsp;p.s.a.d.<br />0020: 6d 00 69 00 6e 00 2e 00&nbsp;&nbsp; m.i.n...<br />0028: 65 00 78 00 65 00 0d 00&nbsp;&nbsp; e.x.e...<br />0030: 0a 00 53 00 79 00 73 00&nbsp;&nbsp; ..S.y.s.<br />0038: 74 00 65 00 6d 00 2e 00&nbsp;&nbsp; t.e.m...<br />0040: 44 00 61 00 74 00 61 00&nbsp;&nbsp; D.a.t.a.<br />0048: 2e 00 53 00 71 00 6c 00&nbsp;&nbsp; ..S.q.l.<br />0050: 43 00 6c 00 69 00 65 00&nbsp;&nbsp; C.l.i.e.<br />0058: 6e 00 74 00 2e 00 53 00&nbsp;&nbsp; n.t...S.<br />0060: 71 00 6c 00 45 00 78 00&nbsp;&nbsp; q.l.E.x.<br />0068: 63 00 65 00 70 00 74 00&nbsp;&nbsp; c.e.p.t.<br />0070: 69 00 6f 00 6e 00 3a 00&nbsp;&nbsp; i.o.n.:.<br />0078: 20 00 53 00 79 00 73 00&nbsp;&nbsp;&nbsp; .S.y.s.<br />0080: 74 00 65 00 6d 00 2e 00&nbsp;&nbsp; t.e.m...<br />0088: 44 00 61 00 74 00 61 00&nbsp;&nbsp; D.a.t.a.<br />0090: 2e 00 53 00 71 00 6c 00&nbsp;&nbsp; ..S.q.l.<br />0098: 43 00 6c 00 69 00 65 00&nbsp;&nbsp; C.l.i.e.<br />00a0: 6e 00 74 00 2e 00 53 00&nbsp;&nbsp; n.t...S.<br />00a8: 71 00 6c 00 45 00 78 00&nbsp;&nbsp; q.l.E.x.<br />00b0: 63 00 65 00 70 00 74 00&nbsp;&nbsp; c.e.p.t.<br />00b8: 69 00 6f 00 6e 00 3a 00&nbsp;&nbsp; i.o.n.:.<br />00c0: 20 00 43 00 6f 00 75 00&nbsp;&nbsp;&nbsp; .C.o.u.<br />00c8: 6c 00 64 00 20 00 6e 00&nbsp;&nbsp; l.d. .n.<br />00d0: 6f 00 74 00 20 00 66 00&nbsp;&nbsp; o.t. .f.<br />00d8: 69 00 6e 00 64 00 20 00&nbsp;&nbsp; i.n.d. .<br />00e0: 73 00 74 00 6f 00 72 00&nbsp;&nbsp; s.t.o.r.<br />00e8: 65 00 64 00 20 00 70 00&nbsp;&nbsp; e.d. .p.<br />00f0: 72 00 6f 00 63 00 65 00&nbsp;&nbsp; r.o.c.e.<br />00f8: 64 00 75 00 72 00 65 00&nbsp;&nbsp; d.u.r.e.<br />0100: 20 00 27 00 64 00 62 00&nbsp;&nbsp;&nbsp; .&#39;.d.b.<br />0108: 6f 00 2e 00 70 00 72 00&nbsp;&nbsp; o...p.r.<br />0110: 6f 00 63 00 5f 00 67 00&nbsp;&nbsp; o.c._.g.<br />0118: 65 00 74 00 56 00 65 00&nbsp;&nbsp; e.t.V.e.<br />0120: 72 00 73 00 69 00 6f 00&nbsp;&nbsp; r.s.i.o.<br />0128: 6e 00 27 00 2e 00 0d 00&nbsp;&nbsp; n.&#39;.....<br />0130: 0a 00 20 00 20 00 20 00&nbsp;&nbsp; .. . . .<br />0138: 61 00 74 00 20 00 4d 00&nbsp;&nbsp; a.t. .M.<br />0140: 69 00 63 00 72 00 6f 00 &nbsp;&nbsp;i.c.r.o.<br />0148: 73 00 6f 00 66 00 74 00&nbsp;&nbsp; s.o.f.t.<br />0150: 2e 00 53 00 68 00 61 00&nbsp;&nbsp; ..S.h.a.<br />0158: 72 00 65 00 50 00 6f 00&nbsp;&nbsp; r.e.P.o.<br />0160: 69 00 6e 00 74 00 2e 00&nbsp;&nbsp; i.n.t...<br />0168: 50 00 6f 00 72 00 74 00&nbsp;&nbsp; P.o.r.t.<br />0170: 61 00 6c 00 2e 00 44 00&nbsp;&nbsp; a.l...D.<br />0178: 61 00 74 00 61 00 2e 00&nbsp;&nbsp; a.t.a...<br />0180: 61 00 2e 00 63 00 28 00&nbsp;&nbsp; a...c.(.<br />0188: 53 00 71 00 6c 00 43 00&nbsp;&nbsp; S.q.l.C.<br />0190: 6f 00 6d 00 6d 00 61 00&nbsp;&nbsp; o.m.m.a.<br />0198: 6e 00 64 00 20 00 41 00&nbsp;&nbsp; n.d. .A.<br />01a0: 5f 00 30 00 2c 00 20 00&nbsp;&nbsp; _.0.,. .<br />01a8: 42 00 6f 00 6f 00 6c 00&nbsp;&nbsp; B.o.o.l.<br />01b0: 65 00 61 00 6e 00 20 00&nbsp;&nbsp; e.a.n. .<br />01b8: 41 00 5f 00 31 00 29 00&nbsp;&nbsp; A._.1.).<br />01c0: 0d 00 0a 00 20 00 20 00&nbsp;&nbsp; .... . .<br />01c8: 20 00 61 00 74 00 20 00&nbsp;&nbsp;&nbsp; .a.t. .<br />01d0: 4d 00 69 00 63 00 72 00&nbsp;&nbsp; M.i.c.r.<br />01d8: 6f 00 73 00 6f 00 66 00&nbsp;&nbsp; o.s.o.f.<br />01e0: 74 00 2e 00 53 00 68 00&nbsp;&nbsp; t...S.h.<br />01e8: 61 00 72 00 65 00 50 00&nbsp;&nbsp; a.r.e.P.<br />01f0: 6f 00 69 00 6e 00 74 00&nbsp;&nbsp; o.i.n.t.<br />01f8: 2e 00 50 00 6f 00 72 00&nbsp;&nbsp; ..P.o.r.<br />0200: 74 00 61 00 6c 00 2e 00&nbsp;&nbsp; t.a.l...<br />0208: 44 00 61 00 74 00 61 00&nbsp;&nbsp; D.a.t.a.<br />0210: 2e 00 61 00 2e 00 63 00&nbsp;&nbsp; ..a...c.<br />0218: 28 00 53 00 71 00 6c 00&nbsp;&nbsp; (.S.q.l.<br />0220: 43 00 6f 00 6d 00 6d 00&nbsp;&nbsp; C.o.m.m.<br />0228: 61 00 6e 00 64 00 20 00&nbsp;&nbsp; a.n.d. .<br />0230: 41 00 5f 00 30 00 2c 00&nbsp;&nbsp; A._.0.,.<br />0238: 20 00 42 00 6f 00 6f 00 &nbsp;&nbsp;&nbsp;.B.o.o.<br />0240: 6c 00 65 00 61 00 6e 00&nbsp;&nbsp; l.e.a.n.<br />0248: 20 00 41 00 5f 00 31 00&nbsp;&nbsp;&nbsp; .A._.1.<br />0250: 29 00 0d 00 0a 00 20 00&nbsp;&nbsp; )..... .<br />0258: 20 00 20 00 61 00 74 00&nbsp;&nbsp;&nbsp; . .a.t.<br />0260: 20 00 4d 00 69 00 63 00&nbsp;&nbsp;&nbsp; .M.i.c.<br />0268: 72 00 6f 00 73 00 6f 00&nbsp;&nbsp; r.o.s.o.<br />0270: 66 00 74 00 2e 00 53 00&nbsp;&nbsp; f.t...S.<br />0278: 68 00 61 00 72 00 65 00&nbsp;&nbsp; h.a.r.e.<br />0280: 50 00 6f 00 69 00 6e 00&nbsp;&nbsp; P.o.i.n.<br />0288: 74 00 2e 00 50 00 6f 00&nbsp;&nbsp; t...P.o.<br />0290: 72 00 74 00 61 00 6c 00&nbsp;&nbsp; r.t.a.l.<br />0298: 2e 00 44 00 61 00 74 00&nbsp;&nbsp; ..D.a.t.<br />02a0: 61 00 2e 00 61 00 2e 00&nbsp;&nbsp; a...a...<br />02a8: 62 00 28 00 53 00 71 00&nbsp;&nbsp; b.(.S.q.<br />02b0: 6c 00 43 00 6f 00 6d 00&nbsp;&nbsp; l.C.o.m.<br />02b8: 6d 00 61 00 6e 00 64 00&nbsp;&nbsp; m.a.n.d.<br />02c0: 20 00 41 00 5f 00 30 00&nbsp;&nbsp;&nbsp; .A._.0.<br />02c8: 29 00 0d 00 0a 00 20 00&nbsp;&nbsp; )..... .<br />02d0: 20 00 20 00 61 00 74 00&nbsp;&nbsp;&nbsp; . .a.t.<br />02d8: 20 00 4d 00 69 00 63 00&nbsp;&nbsp;&nbsp; .M.i.c.<br />02e0: 72 00 6f 00 73 00 6f 00&nbsp;&nbsp; r.o.s.o.<br />02e8: 66 00 74 00 2e 00 53 00&nbsp;&nbsp; f.t...S.<br />02f0: 68 00 61 00 72 00 65 00&nbsp;&nbsp; h.a.r.e.<br />02f8: 50 00 6f 00 69 00 6e 00 &nbsp;&nbsp;P.o.i.n.<br />0300: 74 00 2e 00 50 00 6f 00&nbsp;&nbsp; t...P.o.<br />0308: 72 00 74 00 61 00 6c 00&nbsp;&nbsp; r.t.a.l.<br />0310: 2e 00 44 00 61 00 74 00&nbsp;&nbsp; ..D.a.t.<br />0318: 61 00 2e 00 61 00 2e 00&nbsp;&nbsp; a...a...<br />0320: 62 00 28 00 53 00 71 00&nbsp;&nbsp; b.(.S.q.<br />0328: 6c 00 43 00 6f 00 6d 00&nbsp;&nbsp; l.C.o.m.<br />0330: 6d 00 61 00 6e 00 64 00&nbsp;&nbsp; m.a.n.d.<br />0338: 20 00 41 00 5f 00 30 00&nbsp;&nbsp;&nbsp; .A._.0.<br />0340: 29 00 0d 00 0a 00 20 00&nbsp;&nbsp; )..... .<br />0348: 20 00 20 00 61 00 74 00&nbsp;&nbsp;&nbsp; . .a.t.<br />0350: 20 00 4d 00 69 00 63 00&nbsp;&nbsp;&nbsp; .M.i.c.<br />0358: 72 00 6f 00 73 00 6f 00&nbsp;&nbsp; r.o.s.o.<br />0360: 66 00 74 00 2e 00 53 00&nbsp;&nbsp; f.t...S.<br />0368: 68 00 61 00 72 00 65 00&nbsp;&nbsp; h.a.r.e.<br />0370: 50 00 6f 00 69 00 6e 00&nbsp;&nbsp; P.o.i.n.<br />0378: 74 00 2e 00 50 00 6f 00&nbsp;&nbsp; t...P.o.<br />0380: 72 00 74 00 61 00 6c 00&nbsp;&nbsp; r.t.a.l.<br />0388: 2e 00 54 00 6f 00 70 00&nbsp;&nbsp; ..T.o.p.<br />0390: 6f 00 6c 00 6f 00 67 00&nbsp;&nbsp; o.l.o.g.<br />0398: 79 00 2e 00 44 00 61 00&nbsp;&nbsp; y...D.a.<br />03a0: 74 00 61 00 62 00 61 00&nbsp;&nbsp; t.a.b.a.<br />03a8: 73 00 65 00 2e 00 61 00&nbsp;&nbsp; s.e...a.<br />03b0: 28 00 61 00 20 00 41 00&nbsp;&nbsp; (.a. .A.<br />03b8: 5f 00 30 00 29 00 0d 00&nbsp;&nbsp; _.0.)...<br />03c0: 0a 00 20 00 20 00 20 00&nbsp;&nbsp; .. . . .<br />03c8: 61 00 74 00 20 00 4d 00&nbsp;&nbsp; a.t. .M.<br />03d0: 69 00 63 00 72 00 6f 00&nbsp;&nbsp; i.c.r.o.<br />03d8: 73 00 6f 00 66 00 74 00&nbsp;&nbsp; s.o.f.t.<br />03e0: 2e 00 53 00 68 00 61 00&nbsp;&nbsp; ..S.h.a.<br />03e8: 72 00 65 00 50 00 6f 00&nbsp;&nbsp; r.e.P.o.<br />03f0: 69 00 6e 00 74 00 2e 00 &nbsp;&nbsp;i.n.t...<br />03f8: 50 00 6f 00 72 00 74 00&nbsp;&nbsp; P.o.r.t.<br />0400: 61 00 6c 00 2e 00 54 00&nbsp;&nbsp; a.l...T.<br />0408: 6f 00 70 00 6f 00 6c 00&nbsp;&nbsp; o.p.o.l.<br />0410: 6f 00 67 00 79 00 2e 00&nbsp;&nbsp; o.g.y...<br />0418: 43 00 6f 00 6e 00 66 00&nbsp;&nbsp; C.o.n.f.<br />0420: 69 00 67 00 75 00 72 00&nbsp;&nbsp; i.g.u.r.<br />0428: 61 00 74 00 69 00 6f 00&nbsp;&nbsp; a.t.i.o.<br />0430: 6e 00 44 00 61 00 74 00&nbsp;&nbsp; n.D.a.t.<br />0438: 61 00 62 00 61 00 73 00&nbsp;&nbsp; a.b.a.s.<br />0440: 65 00 2e 00 67 00 65 00&nbsp;&nbsp; e...g.e.<br />0448: 74 00 5f 00 44 00 61 00&nbsp;&nbsp; t._.D.a.<br />0450: 74 00 61 00 62 00 61 00&nbsp;&nbsp; t.a.b.a.<br />0458: 73 00 65 00 56 00 65 00&nbsp;&nbsp; s.e.V.e.<br />0460: 72 00 73 00 69 00 6f 00&nbsp;&nbsp; r.s.i.o.<br />0468: 6e 00 28 00 29 00 0d 00&nbsp;&nbsp; n.(.)...<br />0470: 0a 00 20 00 20 00 20 00&nbsp;&nbsp; .. . . .<br />0478: 61 00 74 00 20 00 4d 00&nbsp;&nbsp; a.t. .M.<br />0480: 69 00 63 00 72 00 6f 00&nbsp;&nbsp; i.c.r.o.<br />0488: 73 00 6f 00 66 00 74 00&nbsp;&nbsp; s.o.f.t.<br />0490: 2e 00 53 00 68 00 61 00&nbsp;&nbsp; ..S.h.a.<br />0498: 72 00 65 00 50 00 6f 00&nbsp;&nbsp; r.e.P.o.<br />04a0: 69 00 6e 00 74 00 2e 00&nbsp;&nbsp; i.n.t...<br />04a8: 50 00 6f 00 72 00 74 00&nbsp;&nbsp; P.o.r.t.<br />04b0: 61 00 6c 00 2e 00 41 00&nbsp;&nbsp; a.l...A.<br />04b8: 64 00 6d 00 69 00 6e 00&nbsp;&nbsp; d.m.i.n.<br />04c0: 69 00 73 00 74 00 72 00&nbsp;&nbsp; i.s.t.r.<br />04c8: 61 00 74 00 69 00 6f 00&nbsp;&nbsp; a.t.i.o.<br />04d0: 6e 00 53 00 65 00 72 00&nbsp;&nbsp; n.S.e.r.<br />04d8: 76 00 69 00 63 00 65 00&nbsp;&nbsp; v.i.c.e.<br />04e0: 2e 00 52 00 75 00 6e 00&nbsp;&nbsp; ..R.u.n.<br />04e8: 28 00 29 00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;(.).&nbsp;&nbsp;&nbsp; </td>
</tr>
</table>
</div>
<p>This was occurring on a SharePoint 2003 upgrade portal. The only thing we needed to fix was shutting down the SharePoint Portal Administration service. The errors stopped.</p>
<p><img src="/aggbug.aspx?PostID=28441" width="1" height="1" alt="  " /></p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wpowell/2007/06/02/event-id-202-sharepoint-portal-administration-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SPS 2003 Restore &#8211; The database schema is too old to perform this operation in this SharePoint cluster</title>
		<link>http://vspug.com/wpowell/2007/06/02/sps-2003-restore-the-database-schema-is-too-old-to-perform-this-operation-in-this-sharepoint-cluster/</link>
		<comments>http://vspug.com/wpowell/2007/06/02/sps-2003-restore-the-database-schema-is-too-old-to-perform-this-operation-in-this-sharepoint-cluster/#comments</comments>
		<pubDate>Sun, 03 Jun 2007 00:08:00 +0000</pubDate>
		<dc:creator>wpowell</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[When I do 2007 upgrades. I typically like to restore the 2003 portal to a virtual server. What this typically means is that I need to determine the service packs on both machines, match SQL server version and service packs, etc. No matter how hard I tried in a couple of instances I always hit [...]]]></description>
			<content:encoded><![CDATA[<div>When I do 2007 upgrades. I typically like to restore the 2003 portal to a virtual server. What this typically means is that I need to determine the service packs on both machines, match SQL server version and service packs, etc. No matter how hard I tried in a couple of instances I always hit the same brick wall... &quot;The database schema is too old to perform this operation in this SharePoint cluster. Please upgrade the database and try again&quot;</div>
<div>&nbsp;</div>
<div>Part of the problem for me is that most of the older portals I&#39;m upgrading are running SQL 2000 with some Service Pack applied. I prefer to use SQL 2005. Depending on how proactive&nbsp;the IT team managing the portal was... Who knows what service packs were applied. </div>
<div>&nbsp;</div>
<div>You can determine what version of SPS 2003 Service packs have been installed by using the system&nbsp;<a href="http://support.microsoft.com/kb/888839"><font color="#2771b3">here</font></a>.</div>
<div>&nbsp;</div>
<div>You can try using the .spb files to use the Backup/Restore utility. At a minimum, this will attach the databases to the SQL 2005 instance. However, it will likely stil fail with the same message... &quot;Schema too old.&quot;</div>
<div>&nbsp;</div>
<div>My solution:</div>
<div>Install 2003 as you normally would. Then create a new portal and name it &quot;Temp&quot; or &quot;Delete Me&quot;. Open up SQL Management and look at the SystemVersion table in the Site database for the newly created portal. Jot down the version number specified in the table. Now open up the Site database of the portal you are trying to restore, open the SystemVersion table and overwrite the version specified there. Go back to Central Admin and delete the temp portal, and now restore the problem child.</div>
<div>&nbsp;</div>
<div>It should restore without a hitch now.</div>
<p><img height="1" src="/aggbug.aspx?PostID=28440" width="1" alt="  " /></p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wpowell/2007/06/02/sps-2003-restore-the-database-schema-is-too-old-to-perform-this-operation-in-this-sharepoint-cluster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
