DataAdapter错误:列超过MaxLength限制

本文关键字:MaxLength 限制 错误 DataAdapter | 更新日期: 2023-09-27 18:12:01

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

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

在填充,我得到这个错误:

附加信息: 'Failed to enable constraints. '一个或多个行包含违反非空、唯一或外键约束的值。

我在命令窗口中运行这个命令:

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

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

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

在我的sqladapter中,我指定了一个size:

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

但这显然不能帮助我的问题。还注意到该列在DB中的大小为'16'。

我注意到一件奇怪的事。这个程序允许我做的是将数据从一个数据库归档到另一个数据库。因此,我有一个表列表,用户可以从中选择要存档的表。奇怪的是,如果我选择一个表,它就能很好地归档。我在上面列出的这个问题实际上不会触发,直到之后的第一个表存档,并且系统试图移动到第二个表。当它试图填满DS的时候,砰。死了。

感谢任何建议/想法。欢呼。

DataAdapter错误:列超过MaxLength限制

我在旧项目中读取数据库时遇到了同样的错误。很奇怪,因为它在B列上报告的长度不能超过110,但在DB设计中,这是其相邻字段a的大小。我尝试在数据集设计器中的tabeladapter上重新配置,它仍然在字段最大大小上交叉连接。然后我在设计器中删除表格并重新添加它。然后它起作用了。自创建xsd以来,数据库中的数据库表设计已被修改。

所以我弄清楚了这个问题。其中一个绑定到数据集本身后端的xml有一个指定最大长度的节点。它被设置为7700。这个7700覆盖了设计器中的属性设置。不知道它是如何开始的,但它是超级令人沮丧的。

谢谢大家的帮助。