Sdílet prostřednictvím


Pokyny a omezení XML Updategramů (SQLXML 4.0)

platí pro:SQL Serverazure SQL Database

Pamatujte na následující při používání XML updategramů:

  • Pokud používáte updategram pro operaci vložení pouze s jednou dvojicí <bloků před> a <po,> blok <před> lze vynechat. Naopak, v případě operace <> mazání lze po bloku vynechat.

  • Pokud používáte updategram s více <bloky před> a <po>v sync tagu<>, musí<> být jak před bloky<>, tak po bloky specifikovány tak, aby tvořily <páry před> a <po>.

  • Aktualizace v updategramu jsou aplikovány na XML pohled poskytovaný XML schématem. Proto, aby výchozí mapování uspělo, musíte buď zadat název souboru schématu v updategramu, nebo pokud název souboru není uveden, musí se názvy prvků a atributů shodovat s názvy tabulek a sloupců v databázi.

  • SQLXML 4.0 vyžaduje, aby všechny sloupce v updategramu byly explicitně mapovány do schématu (buď XDR nebo XSD), které slouží k sestavení XML pohledu pro jeho podřadné prvky. Toto chování se liší od dřívějších verzí SQLXML, které umožňovaly hodnotu sloupce, který nebyl mapován ve schématu, pokud byl naznačen jako součást cizího klíče v sql : relationship anotaci. (Poznámka: tato změna neovlivňuje šíření primárních klíčových hodnot na podřízené prvky, což se stále děje u SQLXML 4.0, pokud není pro podprvek explicitně uvedena žádná hodnota.

  • Pokud používáte updategram k úpravě dat v binárním sloupci (například v SQL Server image datovém typu), musíte poskytnout mapovací schéma, ve kterém musí být specifikován datový typ SQL Serveru (například sql:datatype="image") a XML datový typ (například dt:type="binhex" nebo dt:type="binbase64). Data pro binární sloupec musí být uvedena v updategramu; Anotace sql:url-encode , která je specifikována v mapovacím schématu, je aktualizačním gramem ignorována.

  • Když píšete XSD schéma, pokud hodnota, kterou zadáte pro anotaci sql:relation nebo sql:field , obsahuje speciální znak, například mezerník (například v názvu tabulky "Order Details"), musí být tato hodnota uzavřena v závorkách (například "[Order Details]").

  • Při použití updategramů nejsou podporovány řetězcové vztahy. Například pokud jsou tabulky A a C propojeny řetězovým vztahem používajícím tabulku B, při pokusu o spuštění a spuštění updategramu nastane následující chyba:

    There is an inconsistency in the schema provided.  
    

    I když jsou schéma i updategram jinak správné a správně vytvořené, tato chyba nastane, pokud je přítomen řetězový vztah.

  • Updategramy neumožňují předávání dat o typech obrazů jako parametrů během aktualizací.

  • Binární typy velkých objektů (BLOB) jako text/ntext a obrázky by se neměly používat v předem bloku <> při práci s updategramy, protože to zahrnuje použití pro řízení souběžnosti. To může způsobovat problémy se SQL Serverem kvůli omezením při porovnávání typů BLOB. Například klíčové slovo LIKE se používá v klauzuli WHERE pro porovnání sloupců textového datového typu; srovnání však selžou v případě typů BLOB, kde je velikost dat větší než 8K.

  • Speciální znaky v ntextových datech mohou způsobovat problémy se SQLXML 4.0 kvůli omezením při porovnávání typů BLOB. Například použití "[Serializable]" v bloku <před> updategramy při kontrole souběžnosti sloupce typu ntext selže s následujícím popisem chyby v SQLOLEDB:

    Empty update, no updatable rows found   Transaction aborted  
    

Viz také

Důležité informace o zabezpečení updategramu (SQLXML 4.0)