XSD: как кодировать строку длиной> 255? - PullRequest
0 голосов
/ 08 февраля 2011

Я попробовал следующий код для импорта строки из XML

<xs:element minOccurs="0" name="FIELDNAME" type="xs:string" />

Но некоторые поля содержат более 255 символов. Поэтому я попытался добавить больше символов:

<xs:element minOccurs="0" name="FIELDNAME">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:maxLength value="1024" />
        </xs:restriction>
    </xs:simpleType>
</xs:element>

Данные, которые не проходят проверку, имеют длину 194 символа, включая CDATA. Он не включает в себя одинарные кавычки (они показывают пробел):

<FIELDNAME><![CDATA[
                                                              '
900207 4.5" FOOTED BOWL                      <BR>
                                                                       '
]]></FIELDNAME>

Ошибка в SQL Server SSIS 2008:

Error: 0xC02090FA at Import, XML Source [1]: The "component "XML Source" (1)" 
failed because truncation occurred, and the truncation row disposition on 
"output column "FIELDNAME" (149)"  at "output "DATA" (10)" specifies failure
on truncation. A truncation error occurred on the specified object of the
specified component.

Как бы я сначала создал XML-схему для импорта этих данных без ошибок?

Ответы [ 3 ]

4 голосов
/ 08 февраля 2011

Хммм ... Ну, если он еще не знает о БД, попробуйте это.

Если вы щелкнете правой кнопкой мыши по исходному компоненту xml, у вас есть опция «Показать расширенный редактор»?

Если это так, перейдите на вкладку свойств ввода и вывода, оттуда вы можете изменить метаданные столбца.

2 голосов
/ 08 февраля 2011

Если усечение не является проблемой (хотя я предполагаю, что это так), вы можете установить вывод ошибок из вашего источника XML для этого столбца, чтобы либо игнорировать ошибку, либо перенаправить строку.

1 голос
/ 08 февраля 2011

Вы уверены, что это не ограничение для самого столбца в базе данных?

У меня просто была эта проблема при доступе, изменил тип поля с «Текст» на «Заметка».

Возможно, вам нужно изменить свой на varchar (макс).(Примечание: Макс - это ключевое слово, а НЕ число для вставки)

...