"缺少服务器端相关性"的内容定位
SharePoint 运行状况分析器已检测到一些值得关注的关键问题。其中一条为:
作为管理员,我如何能知道哪些地方用到了这个WebPart呢? Google搜索到2条很有用的途径。
1、通过stsadm来查找webpart的引用状况。
stsadm -o enumallwebs -includewebparts >c:\temp\somelog.txt
在返回的xml结果中,可以看到每个web下的webpart节点。
<Databases> <Database 。。。> <Site Id="76754f86-f517-4d46-8331-58378678401f" 。。。> <Webs Count="50"> <Web Id="ef027756-f112-4765-a5b8-d5a13c1b7417" Url="/" LanguageId="2052" TemplateName="STS#0" TemplateId="1"> <WebParts> <WebPart Id="baf5274e-a800-8dc3-96d0-0003d9405663" Count="20" Status="Missing SafeControls entry" Type="Microsoft.SharePoint.WebPartPages.ListViewWebPart" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /> <WebPart 。。。。 </WebParts> </Web> 。。。
从中就可以找到一些错误的原因。即使出现在藏的很深的一个子网站里,都可以找到。
2、直接通过数据库来查找。用来检查错误的timerjob实际上在对应的内容数据库上运行了一个这样的查询:
SELECT tp_WebPartTypeId, COUNT(1), tp_Assembly, tp_Class FROM AllWebParts (NOLOCK) WHERE tp_WebPartTypeId IS NOT NULL GROUP BY tp_WebPartTypeId, tp_Assembly, tp_Class
通过错误信息提供给我们的WebPartTypeId,进行如下的查询:
SELECT * FROM AllWebParts WHERE tp_WebPartTypeId = 'b82a8e9d-8706-3252-0a3b-ba19bf65e250'
结果中,找到了我要的SiteId。
该表还有一些其他的信息,可供我们排错。常用的几个表以及关系如下:
SELECT Webs.FullUrl, Webs.Title, AllDocs.DirName, AllDocs.LeafName
FROM AllDocs, Sites, AllWebParts, Webs
WHERE Webs.Id = Sites.RootWebId AND AllDocs.Id = AllWebParts.tp_PageUrlID
AND Sites.Id = AllDocs.SiteId
参考资料
Missing Server Side Dependencies - 8d6034c4-a416-e535-281a-6b714894e1aa