Правила и ограничения диаграмм обновления XML (SQLXML 4.0)
Область применения: SQL Server База данных SQL Azure
При использовании диаграмм обновления XML следует помнить следующее.
Если вы используете диаграмму обновления для операции вставки только с одной парой <до> и< после> блоков,< то этот> блок может быть опущен. И наоборот, в случае операции <удаления можно опустить после> блокировки.
Если вы используете диаграмму обновления с несколькими <до> и <после> блоков в теге< синхронизации>,< то перед> блоками и<< после> блоков необходимо указать для формирования <и> после> пар.
Обновления в диаграммах обновления применяются к XML-представлению, предоставленному схемой XML. Поэтому для успешного сопоставления по умолчанию следует либо указать имя файла схемы в диаграмме обновления, либо, если имя файла не указано, имена элемента и атрибута должны совпадать с именами таблицы и столбца базы данных.
SQLXML 4.0 требует, чтобы все значения столбцов в диаграмме обновления были бы явно сопоставлены в схеме (XDR или XSD), предоставленной для создания XML-представления для дочерних элементов. Это поведение отличается от предыдущих версий SQLXML, что позволило значение столбца, не сопоставленного в схеме, если оно было подразумевалось как часть внешнего ключа в заметке sql:relationship . (Следует отметить, что подобное изменение не повлияет на распространение значений первичного ключа на дочерние элементы, которое по-прежнему происходит в SQLXML 4.0, если явно не указано значение для дочернего элемента.
Если вы используете диаграмму обновления для изменения данных в двоичном столбце (например, тип данных образа SQL Server), необходимо указать схему сопоставления, в которой необходимо указать тип данных SQL Server (например, sql:datatype="image") и тип ДАННЫХ XML (например, dt:type="binhex" или dt:type="binbase64). Данные для двоичного столбца должны быть указаны в диаграмме обновления; Заметка sql:url-encode , указанная в схеме сопоставления, игнорируется диаграммой обновления.
При написании схемы XSD, если указанное значение для заметки sql:relation или sql:field содержит специальный символ, например пробел (например, в имени таблицы "Сведения о заказе"), это значение должно быть заключено в скобки (например, "[Сведения о заказе]").
При использовании диаграмм обновления цепочки связей не поддерживаются. Например, если таблицы А и С связаны через цепочку связей, которая использует таблицу В, при попытке запустить и выполнить диаграмму обновления возникнет следующая ошибка:
There is an inconsistency in the schema provided.
Даже если как схема, так и диаграмма обновления верны и правильно оформлены, эта ошибка возникнет, если имеется цепочка связей.
Граммы обновления не позволяют передавать данные типа изображения в качестве параметров во время обновлений.
Типы больших двоичных объектов (BLOB), такие как text/ntext и изображения, не должны использоваться в блоке< перед> началом работы с диаграммами обновления, так как это будет включать их для использования в элементе управления параллелизмом. Это может привести к проблемам с SQL Server из-за ограничений сравнения типов BLOB-объектов. Например, ключевое слово LIKE используется в предложении WHERE для сравнения между столбцами текстового типа данных. Однако сравнения завершаются сбоем в случае типов BLOB, в которых размер данных превышает 8K.
Специальные символы в ntext-данных могут вызвать проблемы с SQLXML 4.0 из-за ограничений сравнения типов BLOB-объектов. Например, использование "[Serializable]" в <>блоке параметров обновления при проверке параллелизма столбца типа ntext завершится ошибкой со следующим описанием ошибки SQLOLEDB:
Empty update, no updatable rows found Transaction aborted