Unable to locate the xml-definition for FieldName with FieldId

问题描述

最近检查SharepointLog,有极大量以下的logs,大概每分钟2-3个:Unabletolocatethexml-definitionforFieldNamewithFieldId'xxxx-xxxx-xxxx-xxxx',exception:Microsoft.SharePoint.SPException:Catastrophicfailure(ExceptionfromHRESULT:0x8000FFFF(E_UNEXPECTED))--->System.Runtime.InteropServices.COMException:Catastrophicfailure(ExceptionfromHRESULT:0x8000FFFF(E_UNEXPECTED))atMicrosoft.SharePoint.Library.SPRequestInternalClass.GetGlobalContentTypeXml(StringbstrUrl,Int32type,UInt32lcid,ObjectvarIdBytes)atMicrosoft.SharePoint.Library.SPRequest.GetGlobalContentTypeXml(StringbstrUrl,Int32type,UInt32lcid,ObjectvarIdBytes)我比较过所有投诉找不到FieldID的log,这些FieldID(GUID)共有六十多个,不断重覆在投诉找不到,这些Log都是由爬网帐号引发的我用PowerShell检查一次整个SiteCollection都没有Column使用这六十多个FieidID,我看过相关功能的源码,有使用Hardcode的方式订义了GUID,但就没有这六十多个的如果我停了相关FarmSolution,Resetsearchindex就不会再发生错误,再次启动该Solution错误又出来了...有什么方法可以查找?

解决方案

解决方案二:
这六十多个field可能是之前用到的,然后又删掉了。这个不知道有没有用:http://williamvanstrien.blogspot.com/2013_09_01_archive.html
解决方案三:
引用

停了相关FarmSolution

那FarmSolution里,有定义field的XML吗,如果有,需要仔细检查一下,肯有可能XML写的不对。另外一个思路就是,从下往上找。从你的log里可以看出,这些field还是被用在了library。如果你对内容数据库有权限的话,去数据库里,先找到这个field,再找到这个field关联的library,就可以知道是哪个library的那个column出问题了。
解决方案四:
不行就拿fieldid到db里查一下,大概就知道是什么东西了
解决方案五:
引用3楼FoxDave的回复:

不行就拿fieldid到db里查一下,大概就知道是什么东西了

我在DB嘗試找,但我不懂語法,我用以下的找不到.ContentTypeId似乎不是String,也不是數字,我不懂如何找SELECT*FROM[ContentDB].[dbo].[ContentTypes]WHEREContentTypeIdlike‘%xxxx-xxxx-xxxx-xxxx%’引用2楼SPFarm的回复:

引用
停了相关FarmSolution

那FarmSolution里,有定义field的XML吗,如果有,需要仔细检查一下,肯有可能XML写的不对。另外一个思路就是,从下往上找。从你的log里可以看出,这些field还是被用在了library。如果你对内容数据库有权限的话,去数据库里,先找到这个field,再找到这个field关联的library,就可以知道是哪个library的那个column出问题了。

我在源碼中看到幾個Element.xml檔,其中一個有定義不同欄位的GUID和名字,但這些GUID全部都不是那六十多個GUID
解决方案六:
查AllUserData表看看
解决方案七:
引用5楼FoxDave的回复:

查AllUserData表看看

是不是tp_GUID欄呢?我查過沒有該六十多個GUID.這也不奇怪?LOG中本來就說找不到麻?
解决方案八:
引用6楼legendgod的回复:

Quote: 引用5楼FoxDave的回复:
查AllUserData表看看

是不是tp_GUID欄呢?我查過沒有該六十多個GUID.這也不奇怪?LOG中本來就說找不到麻?

啊对!是的!整反了还得是从xml里面找
解决方案九:
問題尚未解決,但記錄一下吧由於在ContentDB中的ContentTypes表的ContentTypeId是用HEXSTR,要用內置的Function去執行,例子如下:Select*fromContentDB.[dbo].[ContentTypes]wheremaster.dbo.fn_varbintohexstr(ContentTypeId)LIKE'%xxxxxx-xxxxxx-xxxxxx-xxxxxxx%'
解决方案十:
引用7楼FoxDave的回复:

Quote: 引用6楼legendgod的回复:
Quote: 引用5楼FoxDave的回复:
查AllUserData表看看

是不是tp_GUID欄呢?我查過沒有該六十多個GUID.這也不奇怪?LOG中本來就說找不到麻?

啊对!是的!整反了还得是从xml里面找

找了幾天都找不到...你指的XML是哪個呢?
解决方案十一:
引用9楼legendgod的回复:

Quote: 引用7楼FoxDave的回复:
Quote: 引用6楼legendgod的回复:
Quote: 引用5楼FoxDave的回复:
查AllUserData表看看

是不是tp_GUID欄呢?我查過沒有該六十多個GUID.這也不奇怪?LOG中本來就說找不到麻?

啊对!是的!整反了还得是从xml里面找

找了幾天都找不到...你指的XML是哪個呢?

就是sharepoint目录中你的feature里面的定义文件看看有没有field定义相关的
解决方案十二:
引用10楼FoxDave的回复:

就是sharepoint目录中你的feature里面的定义文件看看有没有field定义相关的

我只知道源碼中有幾個element.xml,查過沒有出現這些GUID,還有其他地方可以查找嗎?謝謝指教!
解决方案十三:
环境是升级上来的?感觉只有这样才会遇到这么糟心的问题,建议检查下字段的xml,看看把缺少的拷贝一下,试试?
解决方案十四:
引用12楼linyustar的回复:

环境是升级上来的?感觉只有这样才会遇到这么糟心的问题,建议检查下字段的xml,看看把缺少的拷贝一下,试试?

沒錯,是升級上來的!請問要怎樣檢查呀...我在服務器上的/15/Templates/Features/找到對應的XML,其中elements.xml也有定義一些GUID,但就沒有LOG中提及的那些GUID...你意思是要把缺少的補上去?
解决方案十五:
谷歌一下,看看有没有类似的解决方案?
解决方案:
引用14楼linyustar的回复:

谷歌一下,看看有没有类似的解决方案?

老實說,已經向微軟開了票,他們還未看得透...
解决方案:
引用15楼legendgod的回复:

Quote: 引用14楼linyustar的回复:
谷歌一下,看看有没有类似的解决方案?

老實說,已經向微軟開了票,他們還未看得透...

我这两天折腾毁了。微软支持吧,怎么说呢,有点时候很有效,但大部分时候也没什么用,他们不了解具体的环境,就是给你瞎指挥

时间: 2024-10-28 14:23:54

Unable to locate the xml-definition for FieldName with FieldId的相关文章

Unable to locate Spring NamespaceHandler for XML schema namespace

目前做的项目,其中一个模块是由我负责,采用hibernate和spring,没有使用struts.是一个socket 服务器,运行主类的main方法即启动程序. 使用IDE:eclipse 构建工具:maven   在eclipse中运行没问题,但是使用maven的maven-assembly-plugin 插件打包成为可执行的jar后,在命令行中运行: Java -jar xxx.jar 报错:Unable to locate Spring NamespaceHandler for XML s

ERROR:internal error Unable to locate libvirtd daem错误

在编译配置libvirt12.2时如果prefix不是usr目录,在使用libvirt创建VM则会出现 ERROR:internal error Unable to locate libvirtd daemon in $PATH 即便libvirtd所在目录已经加入了PATH.本人认为这是libvirt一个bug. 解决方法是:把你的libvirtd链接到/usr下 #pwd /usr #ln -s /usr/local/libvirt/sbin/libvirtd libvirtd 上面问题解决

ubuntu12.10在apt-get时提示 E: Unable to locate package libncurses5-dev

问题描述 ubuntu12.10在apt-get时提示 E: Unable to locate package libncurses5-dev jaden@ubuntu:/etc/apt$ sudo apt-get install libncurses5-dev Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package l

Unable to locate Spring for XML schema [http:/org.springfamework/schema/context]

问题描述 问题是:Configurationproblem:UnabletolocateSpringNamespaceHandlerforXMLschemanamespace[http://www.springframework.org/schema/context]Offendingresource:ServletContextresource[/WEB-INF/context/applicationContext.xml]这是spring的application.xml:<?xmlversi

帮帮我吧~Unable to locate appropriate constructor on class

问题描述 报错:org.hibernate.hql.ast.QuerySyntaxException:Unabletolocateappropriateconstructoronclass代码是Queryquery=session.createQuery("selectBuyPlanning(t.id,t.pcode,t.pdatd,t.entryusername,t.bossdatd,t.recordlock,t.recordstatus,t.recordshow,t.departmentco

FileNotFoundException: AndroidManifest.xml

问题描述 FileNotFoundException: AndroidManifest.xml 05-23 04:50:58.131: W/PackageParser(1489): Unable to read AndroidManifest.xml of /data/local/tmp/Chat.apk 05-23 04:50:58.131: W/PackageParser(1489): java.io.FileNotFoundException: AndroidManifest.xml 05

为什么我配置Spring的事务后不能得到BEAN

问题描述 我配置Spring的事务后不能得到BEAN如果把事务的部分去掉的话就能够得到下面这是applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins

Spring的IoC容器实现原理(一)#loadBeanDefinition

Spring有十几个组件,核心组件为bean(演员)-context(舞台)-core(道具) bean包装的是object,而object中肯定要有数据,如何给这些数据提供生存环境就是context要解决的问题,对于context来说他就是要发现每个bean之间的关系,为他们建立起来并维护好这些关系.所以context就是一个bean关系的集合,这个关系集合就是我们常说的IOC容器.core组件就是发现.建立和维护每个bean之间的关系所需要的一些工具,把core叫做util更为贴切.   

看看Spring的源码(一)——Bean加载过程

本文转自独立博客:Geeekr 最近几天跟同事聊起Spring的一些问题,对一些地方有些疑问,趁这两天有点空,看看Spring的源码,了解下具体的实现细节.本文基于Spring 4.0.5版本. 首先Web项目使用Spring是通过在web.xml里面配置org.springframework.web.context.ContextLoaderListener初始化IOC容器的. <listener> <listener-class>org.springframework.web.