深入浅出SharePoint——批量导入数据
string batchReturn = web.ProcessBatchData(batch);
<Results><Result ID="0" Code="-2147217900"> <ErrorText>The operation failed because an unexpected error occurred. (Result Code: 0x80040e14)</ErrorText></Result> </Results>
原因:
在定义schema.xml文件的时候,
多行文本的属性,ColName应定义为ntext2,而不是nvarchar3。
正确写法如下:
<Field Type="Note" DisplayName="Address" Required="FALSE" NumLines="4" RichText="FALSE" RichTextMode="Compatible" IsolateStyles="FALSE" Sortable="FALSE" Group="C0370A" ID="{3A1A4F68-D114-4dd0-84C1-326C8C35BFF3}" StaticName="C0370A_VPPI_Address" Name="C0370A_VPPI_Address" ColName="ntext2" AllowHyperlink="TRUE" AppendOnly="FALSE"/>
原因二:多个Field的ColName同名,应该为不同的Field指定不同的名称。
正确写法:
<Field Type="Text" DisplayName="First Name" Required="FALSE" MaxLength="255" Group="C0370A" ID="{1A664508-AB12-44fd-82DF-9B71348D01DB}" StaticName="C0370A_VPPI_FirstName" Name="C0370A_VPPI_FirstName" Customization="" ColName="nvarchar6" />
<Field Type="Text" DisplayName="Phone Number" Required="FALSE" MaxLength="255" Group="C0370A" ID="{079D3500-F36E-4556-9C99-D24134CE663E}" StaticName="C0370A_VPPI_PhoneNum" Name="C0370A_VPPI_PhoneNum" Customization="" ColName="nvarchar6" />
原理剖析:ColName属性定义字段与此字段的物理存储名称之间的映射。这必须是基础数据库中的有效名称,并且必须与数据库表中使用的名称相同。如果未指定,则服务器将生成一个列名称,此列名称不会与任何现有列名称发生冲突并只包含 Microsoft SQL Server 允许的字符。
因此建议非必须的属性设置,我们不要添加,从而减少不必要的麻烦。