DataAdapter错误:列超出MaxLength限制

时间:2015-09-08 21:05:45

标签: c# dataset

当我尝试填充数据集数据表时发生错误。

ds = dsMyDataset;
sqlAdapter.Fill(ds, dsMyDataset.MyTable.TableName); // Uses the SQLAdapters 'select command'

在填充时,我收到此错误:

其他信息 :'无法启用约束。一行或多行包含违反非null,唯一或外键约束的值。'

我在命令窗口中运行此命令:

dsMyDataset.MyTable.GetErrors()[0].RowError

它告诉我" Column' XMLHistory'超过MaxLength限制。"

奇怪,因为在数据集的长度属性中指定了该字段的长度为“2147483647”。

所以在我的sqladapter中我指定了一个大小:

sqlComm.Parameters.Add("@XMLHistory", SqlDbType.Text, 2147483647, "XMLHistory");

但这显然无助于我的问题。另请注意,该列的数据库中的大小为' 16'。

现在我注意到了一件奇怪的事情。该程序允许我做的是将数据从一个DB归档到另一个DB。所以我有一个表列表,用户可以从中进行选择以进行存档。奇怪的是,如果我选择一个表,它就可以存档。我在上面列出的这个问题实际上并没有在之后第一个表存档并且系统尝试转移到第二个表时实际触发。它试图填补DS,booooom的那一刻。死。

任何建议/意见表示赞赏。干杯。

2 个答案:

答案 0 :(得分:1)

我在旧项目中读取数据库时遇到了同样的错误。很奇怪,因为它的报告不能超过B列的长度110,而是DB设计中的相邻字段A的大小。我尝试在数据集设计器中的tabeladapter上进行重新配置,它仍然在字段最大尺寸上交叉连接。然后我把桌子放在设计师中并重新添加。然后它奏效了。自创建xsd以来,数据库表设计已在数据库中进行了修改。

答案 1 :(得分:0)

所以我想出了这个问题。连接到数据集后端的xml之一具有指定最大长度的节点。它设置为7700.这7700覆盖了设计师的属性设置。不确定它是如何开始的,但它是非常令人沮丧的。

谢谢大家的帮助。