Поделиться через


Рекомендации и ограничения диаграмм обновления XML (SQLXML 4.0)

Помните следующее при использовании диаграмм обновления XML:

  • Если вы используете диаграмму обновления для операции вставки только с одной парой <до> и <после> блоков, <то этот> блок может быть опущен. И наоборот, в случае операции <удаления можно опустить после> блокировки.

  • Если вы используете диаграмму обновления с несколькими <до> и <после> блоков в теге <синхронизации>, <то перед> блоками и <после> блоков необходимо указать для формирования <и>после> пар.<

  • Обновления в диаграмме обновления применяются к xml-представлению, предоставленному схемой XML. Поэтому для успешного сопоставления по умолчанию необходимо указать имя файла схемы в диаграмме обновления или, если имя файла не указано, имена элементов и атрибутов должны совпадать с именами таблиц и столбцов в базе данных.

  • SQLXML 4.0 требует, чтобы все значения столбцов в диаграмме обновления были явно сопоставлены в схеме (XDR или XSD), предоставленной для создания представления XML для его дочерних элементов. Это поведение отличается от предыдущих версий SQLXML, что позволило значению столбца, не сопоставленного в схеме, если он подразумевался как часть внешнего ключа в заметке sql:relationship . (Обратите внимание, что это изменение не влияет на распространение значений первичного ключа на дочерние элементы, которые по-прежнему возникают для SQLXML 4.0, если значение явно не указано для дочернего элемента.

  • Если вы используете диаграмму обновления для изменения данных в двоичном столбце (например, тип данных SQL Server image ), необходимо указать схему сопоставления, в которой необходимо указать тип данных SQL Server (например, sql:datatype="image") и тип данных XML (например, dt:type="binhex" или dt:type="binbase64) . Данные для двоичного столбца должны быть указаны в диаграмме обновления; Заметка sql:url-encode , указанная в схеме сопоставления, игнорируется диаграммой обновления.

  • При написании схемы XSD, если указанное значение для sql:relation заметки sql:field содержит специальный символ, например пробел (например, в имени таблицы "Сведения о заказе"), это значение должно быть заключено в скобки (например, "[Сведения о заказе]").

  • При использовании диаграмм обновления связи цепочки не поддерживаются. Например, если таблицы A и C связаны через связь цепочки, использующую таблицу B, при попытке выполнить и выполнить диаграмму обновления возникнет следующая ошибка:

    There is an inconsistency in the schema provided.  
    

    Даже если схема и диаграмма обновления правильно и правильно сформированы, эта ошибка возникает, если связь цепочки присутствует.

  • Граммы обновления не позволяют передавать image данные типа в качестве параметров во время обновлений.

  • Типы больших двоичных объектов (BLOB), такие как text/ntext и изображения, не должны использоваться в блоке <до> работы с диаграммами обновления, так как это будет включать их для использования в элементе управления параллелизмом. Это может привести к проблемам с SQL Server из-за ограничений сравнения типов BLOB-объектов. Например, ключевое слово LIKE используется в предложении WHERE для сравнения столбцов text типа данных. Однако сравнения завершаются сбоем в случае типов BLOB, в которых размер данных превышает 8K.

  • Специальные символы в ntext данных могут вызвать проблемы с SQLXML 4.0 из-за ограничений сравнения типов BLOB-объектов. Например, использование "[Serializable]" в<> блоке параметров обновления при проверке параллелизма столбца ntext типа завершится сбоем со следующим описанием ошибки SQLOLEDB:

    Empty update, no updatable rows found   Transaction aborted  
    

См. также

Вопросы безопасности системы обновления (SQLXML 4.0)