Michael Pertek and I have written a professional article Hart am Datenlimit - Externe Speicherung grosser Datenmengen in SharePoint 2007 for a German database magazine called database pro (sorry no English translation available). This article is based on a white paper I have written with Michael in September 2008. The first link includes the white paper and the last two links contain the English translation.

A translation for the article is not intended.

Summary

The following summary is in German since the article is not translated…

Die Speicherung von grossen Datenmengen ist zu einem zentralen Entscheidungskriterium bei der Auswahl einer strategischen Plattform für businessrelevante IT Applikationen geworden. Wo liegen meine Daten, wie können diese regelmässig und einfach gesichert (Backup) und im Bedarfsfall wieder hergestellt (Recovery) werden? Am Beispiel eines Patientendossiers für ein Krankenhaus erläutern Andreas Glaser und Michael Pertek wie Speichermechanismen für grosse Datenmengen mit SharePoint interagieren. In dem Artikel werden verschiedene Varianten vorgestellt, wie unstrukturierte Daten gespeichert werden können. Als konkrete Beispiel und Variationen werden angerissen:

  • VARBINARY (MAX)-Datentyp
  • Filestream
  • External BLOB Storages (=EBS)
  • Remote BLOB Storages (=RBS)
Anhand von konkreten Anleitungen und Codebeispielen zeigen die Autoren die Anwendungsmöglichkeiten mit den jeweiligen Vor- und Nachteilen und geben eine Ausblick auf herstellerseitige Lösungsansätze, die hoffentlich mit SharePoint 2010 zumindest teilweise realisiert werden.
Der ganze Artikel unter: http://www.namics.com/wissen/hart-am-datenlimit
Das passende Whitepaper unter: http://www.namics.com/download/Whitepaper_SharePoint_23Sep08.pdf

This problem was another result because of a snapshot taken at the virtualized SQL Server. After stepping back to a state in the past using the snapshot I got the error “The object SPPersistedFile Name=SOLUTIONNAME-SOMEGUID.bak Parent=SPSolutionLanguagePack Name=0 has been deleted by another user since it was last fetched.” and after that the COM exception.

You can read more about the previous error:

Problem description

I can’t remember what I exactly did but it was upgradesolution, deploysolution or retractsolution which resulted in the following error:

Retrieving the COM class factory for component with CLSID {A8F03BE3-EDB7-4972-821F-AF6F8EA34884} failed due to the following error: 800703fa.

This error occurred on a Windows Server 2008.

Solution

iisreset ;) I was really lucky that the problem was gone after doing an iisreset because I didn’t want to track down a COM exception.

Using SharePoint 2007 in a virtualized environment can bring up new or different problems compared to a physical machine. With Hyper-V or VMware ESX you can take a snapshots of your SharePoint 2007 environment including SQL Server. Jumping back to a state in the past can be helpful if something is corrupted. Jumping back can also corrupt your SharePoint farm. In this case a snapshot of the SQL Server was taken and after some time used to go back to a state in the past resulting in the error.

Problem description

After running stsadm with the operation upgradesolution the following error was display in command prompt:

“The object SPPersistedFile Name=SOLUTIONNAME-SOMEGUID.bak Parent=SPSolutionLanguagePack Name=0 has been deleted by another user since it was last fetched.”

I wasn’t able to retract, remove or upgrade the solution neither by stsadm nor using Central administration.

The object SPPersistedFile Name=SOLUTIONNAME-SOMEGUID.bak Parent=SPSolutionLanguagePack Name=0 has been deleted by another user since it was last fetched. 

Solution

The reason for this behavior was the retraction of a snapshot regarding the SQL Server. The snapshot was taken at the SQL Server with a certain version of a solution package. After taking the snapshot a new version of the solution package was deployed. Retracting the snapshot resulted in a different state of the solution in the configuration database and on the file system of the SharePoint server.

Fortunately two of my colleagues came up with a solution. Microsoft released a knowledge base article (KB39308) which solves a different problem but can be used to solve my upgradesolution problem too:

Error message when you try to modify or to delete an alternate access mapping in Windows SharePoint Services 3.0: "An update conflict has occurred, and you must re-try this action"

There is a cache folder stored on the SharePoint 2007 server which has to be deleted using the instructions given by Microsoft.

Posted on: October 05, 2009  

MOSS 2007 / WCMS development - List does not exist

Sometimes things don’t work from one moment to the other if you do MOSS 2007 / WCMS development. Usually it’s due to a mistake I made and usually finding it is difficult since some error message aren’t really useful:

This time I got a “List does not exist” error together with a COMException.

Problem description

This problem occurred after loading a site collection I have created with the out-of-the-box publishing template. Here are more details about the problem:

List does not exist

The page you selected contains a list that does not exist.  It may have been deleted by another user.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: List does not exist

The page you selected contains a list that does not exist.  It may have been deleted by another user.

Here is a picture with the error:

image

Solution

The only thing I did was an iisreset. I couldn’t imagine a reason for this error so I thought about a reboot. Since this takes more time I did an iisreset and after that everything worked fine after reloading the site collection.

Here we go again: Playing around with SharePoint 2007 xml to create site definitions, site columns or content types isn’t always easy and fun. You have to be careful because forgetting something will result in an error message which may be unhelpful. In this case I got a helpful error message after forgetting an attribute in my module.

Problem description

The error says that something is wrong with the default.aspx: “Failed to instantiate file "default.aspx" from module "MODULE": The specified list does not exist.”

image

So I thought about reviewing the onet.xml.

Solution

The default.aspx couldn’t be saved since I forgot to write the Url to the pages library.

<Module Name="[MODULE]" Url="" Path="">
  <File Url="default.aspx" Type="GhostableInLibrary" >
    <Property Name="Title" Value="$Resources:cmscore,IPPT_HomeWelcomePage_Title;" />
    <Property Name="PublishingPageLayout" Value="~SiteCollection/_catalogs/masterpage/
pagelayout.aspx, ~SiteCollection/_catalogs/masterpage/pagelayout.aspx
" /> <Property Name="ContentType" Value="Page ContentType" /> <Property Name="PublishingAssociatedContentType" Value=";#Page ContenType;#
[CONTENTTYPEID];#
" /> </File> </Module>

After putting in the correct Url I was able to create new sites:

<Module Name="[MODULE]" Url="$Resources:cmscore,List_Pages_UrlName;" Path="">
  <File Url="default.aspx" Type="GhostableInLibrary" >
    <Property Name="Title" Value="$Resources:cmscore,IPPT_HomeWelcomePage_Title;" />
    <Property Name="PublishingPageLayout" Value="~SiteCollection/_catalogs/masterpage/
pagelayout.aspx, ~SiteCollection/_catalogs/masterpage/pagelayout.aspx
" /> <Property Name="ContentType" Value="Page ContentType" /> <Property Name="PublishingAssociatedContentType" Value=";#Page ContenType;#
[CONTENTTYPEID];#
" /> </File> </Module>

You can find the missing part in line 1.

Writing tons of xml in order to create SharePoint 2007 site columns and getting and error “The given key was not present in the dictionary.” after deployment isn’t the thing I want to get at the end of the day. After doing some review I found the error which can easily be missed.

Problem description

This is the error I got after deployment which isn’t really helpful:

image

This is the text:

The given key was not present in the dictionary.   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at Microsoft.SharePoint.SPFieldCollection.CreateSPField(Int32 index)
   at Microsoft.SharePoint.SPFieldCollection.EnsureSPField(Int32 index)
   at Microsoft.SharePoint.SPFieldCollection.get_Item(Int32 iIndex)
   at Microsoft.SharePoint.SPFieldCollection.ItemAtIndex(Int32 iIndex)
   at Microsoft.SharePoint.SPBaseCollection.SPEnumerator.System.Collections.IEnumerator.get_Current()
   at Microsoft.SharePoint.ApplicationPages.FieldListRenderer.OnPreRender(EventArgs e)
   at System.Web.UI.Control.PreRenderRecursiveInternal()
   at System.Web.UI.Control.PreRenderRecursiveInternal()
   at System.Web.UI.Control.PreRenderRecursiveInternal()
   at System.Web.UI.Control.PreRenderRecursiveInternal()
   at System.Web.UI.Control.PreRenderRecursiveInternal()
   at System.Web.UI.Control.PreRenderRecursiveInternal()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Solution

After deleting every field step by step I found that the following field was creating the error:

  <Field ID="{CA57B137-76C9-47e1-A49C-BEA5D819081B}" Name="NAME1"
         Type="Url" DisplayName="DISPLAYNAME" Group="GROUP"
         AllowDeletion="False" Sealed="TRUE" Format="Hyperlink" />

After reviewing that the type=”Url” is case sensitive and needs to be all uppercase type=”URL”:

  <Field ID="{CA57B137-76C9-47e1-A49C-BEA5D819081B}" Name="NAME2"
         Type="URL" DisplayName="DISPLAYNAME" Group="GROUP"
         AllowDeletion="False" Sealed="TRUE" Format="Hyperlink" />

Just a little mistake which can take a lot of time to find… I hope it saves time for someone else.