SharePoint "System.Data.SqlClient.SqlException (0x80131904): Parameter '@someColumn' was supplied multiple times.“


最近在處理SharePoint Office365的相關開發的時候發現了這樣一個奇怪的現象:

無法通過API更新Editor field,只要已更新就會throw Exception,由於是Office365的Exception,無法單單從Exception中分析出問題原因,而且奇怪的是新創建的List也存在同樣的問題。

試了半天也沒找到解決辦法,單單看field的SchemaXml也沒發現什么比較特殊的地方。

無奈之下save了一個list template,上傳到本地的SharePoint 2013環境,通過這個list template 新建了一個list,發現這樣的list也存在相同的問題,僅通過Exception也沒分析出什么問題,但是既然到本地了,我們可以看SharePoint Log啊,果然,在SharePoint Log中發現了一可疑的Error:

System.Data.SqlClient.SqlException (0x80131904): Parameter '@tp_Editor' was supplied multiple times.

經過在網上漫長的搜索,總算找到了個比較靠譜的答案:

http://help.share-gate.com/article/663-problem-with-the-sharepoint-database

通過進一步研究發現,產生該問題實際上是因為這個builtin的field被我們自己修改過,導致產生了version,進而導致在update時與默認的builtin column的SQL 更新字段即TP_Editor沖突,導致產生了這個問題。

對於SharePoint 2013來說,比較好的解決方案並不是像鏈接上所說了修改這個builtin column的schemaXML,而是應該將這個field的修改給revert回原來的狀態,即調用下面一個方法:

spField.RevertCustomizations()

將field revert回去,這樣再看field的schemaXMl就會發現燕來xml中的version attribute 就沒有了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM