2015-09-08 2 views
0

Ошибка возникает, когда я пытаюсь заполнить набор данных datasable.Ошибка DataAdapter: столбец превышает предел MaxLength

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

На заливку, я получаю эту ошибку:

Дополнительная информация: «Не удалось включить ограничения. Одна или несколько строк содержат значения, нарушающие непустые, уникальные или внешние ключи.

я запустить эту команду в окне командной строки:

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

И сообщает мне, что «Колонка„XMLHistory“превышает предел MaxLength.»

Нечетный, поскольку в свойстве длины набора данных задается длина '2147483647' для этого поля.

Так что в моем sqladapter уточняю размер:

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

Но это, видимо, не помогает мой вопрос вне. Также заметил, что размер в БД для этого столбца равен «16».

Теперь вот странная вещь, которую я заметил. То, что эта программа позволяет мне делать, - это архивные данные из одной базы данных в другую. Поэтому у меня есть список таблиц, которые пользователь может выбрать из архива. Что странно в том, что если я выберу одну таблицу, она будет архивировать просто отлично. Эта проблема, как я уже упоминал выше, фактически не запускает до после первых архивов таблиц, и система пытается перейти ко второй таблице. В тот момент, когда он пытается заполнить DS, booooom. Мертв.

Любые предложения/мысли оценены. Приветствия.

+0

Я думаю, что проблема не в максимальной длине SQL-параметра, а в максимальной длине столбца в базе данных. Какую базу данных вы используете? Вы говорите, что максимальная длина столбца в БД равна 16, вы можете сделать это больше? –

+0

SQL Server. Я думаю, что было бы странно, если бы длина в sql-сервере была проблемой, потому что, если я выбираю одну таблицу для архивирования, она делает это просто отлично. И я подтвердил, что все параметры настройки размера одинаковы во всех БД в настоящее время. –

+0

Если первый преуспевает, тогда кажется, что это проблема «уникального» ограничения. Или у данных во второй таблице есть проблема. – Loathing

ответ

1

У меня была такая же ошибка при чтении базы данных в старом проекте. Было странно, потому что он сообщал, что не может превышать длину 110 на столбце B, но в дизайне БД, который был размером с его смежным полем A. Я попробовал переконфигурировать на tabeladapter в дизайнере набора данных и по-прежнему работал с перекрестными проводами на максимальных размерах поля , Затем я просто уронил стол в дизайнере и снова добавил его. Тогда это сработало. Дизайн базы данных базы данных был изменен в базе данных с момента создания xsd.

+0

Да, я тоже пробовал этот маршрут. Но он все еще был мертв в воде. Я решил эту проблему и опубликовал выше. Спасибо за помощь. –

0

Итак, я понял вопрос. Один из xmls, который связан с базой данных самого набора данных, имел узел, определяющий максимальную длину. Он был установлен в 7700. Это 7700 переписывало настройки свойств в дизайнере. Не уверен, как это началось, но это было очень сложно.

Спасибо всем за помощь.

Смежные вопросы