DataAdapter error: the column exceeds the MaxLength limit

DataAdapter error: the column exceeds the MaxLength limit

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

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

填充时,出现此错误:

附加信息:'Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.'

我运行这个命令在命令window中:

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

它告诉我 "Column 'XMLHistory' exceeds the MaxLength limit."

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

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

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

但这显然无助于解决我的问题。还注意到该列在数据库中的大小为“16”。

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

任何 suggestions/thoughts 感谢。干杯。

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

所以我想通了这个问题。与数据集后端相关的 xml 之一有一个指定最大长度的节点。它被设置为 7700。这个 7700 覆盖了设计器中的 属性 设置。不确定它是如何设置的,但它非常令人沮丧。

感谢大家的帮助。