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 允許的字元。
因此建議非必須的屬性設定,我們不要添加,從而減少不必要的麻煩。