隐藏的命令stsadm –o deleteconfigurationobject –id {GUID}

问题描述

===========

最近遇到一个问题, 一个infopath form template上传后一直处于installing的状态, 再上传新的报错, 界面上删不掉, 用stsadm removeformtemplate也删不掉, Activate也报错.

image

在DB层次(目标是Config DB)试着去查找这个form相关的对象, 发现跟正常的form相比, 这个问题form的类型(Microsoft.Office.InfoPath.Server.Administration.FormTemplate)缺少很多相关对象. 这些对象的类型包括:

    a. SPSolution

    b. SPPersistedFile

    c. SPFeatureDefinition

    d. Microsoft.Office.InfoPath.Server.Administration.PersistedString

这里用到的工具是之前共享给大家过的<<如何在某一数据库的所有表的所有列上搜索一个字符串?>>.

正犯愁如何才能摆脱这个处于错误状态的form对象. 大家都知道胆敢手动修改sharepoint的数据库是个什么严重后果.

有个朋友提示说有个隐藏的stsadm命令叫做deleteconfigurationobject的, 也许适用.

 

经过一系列的测试, 发现这个命令正好适合我这里的场景. 用它删掉了问题form object后, 再次上传那个form template, 问题解决.

 

注意, 这个命令之所以隐藏, 是因为它非常危险. 因为SharePoint数据库中的数据条目之间的相互引用非常多, 单纯干掉一个object难免会破坏一些关联关系.

所以, 运行这个命令之前, 请备份所有的数据库.

以便出问题后, 进行恢复.

 

参考资料

============

The undocumented “deleteconfigurationobject” parameter

http://weblogs.asp.net/bsimser/archive/2009/07/06/the-undocumented-deleteconfigurationobject-parameter.aspx

原文地址:https://www.cnblogs.com/awpatp/p/2000244.html