Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Ne feledd a következőket XML updategramok használatakor:
Ha updategramot használsz egy beszekesztési művelethez, ahol csak egy <pár előtte> és <után> blokkol, akkor az <előtte> blokk kihagyható. Ezzel szemben, ha törlés történik, az <after-blokk> kihagyható.
Ha egy updategramot használsz, ahol több <előtte> és <utána> blokk van a <szinkron> címkében, akkor mind <előtte>, mind <utána> blokkokat kell megadni, hogy párok előzetesen> és utána alakuljanak< ki.><
A updategramban megjelenő frissítéseket az XML séma által biztosított XML nézetre alkalmazzák. Ezért az alapértelmezett leképezés sikeréhez vagy meg kell adnod a sémafájl nevét a updategramban, vagy ha a fájlnév nincs megadva, az elem- és attribútumneveknek egyezniük kell az adatbázis táblázat- és oszlopneveivel.
Az SQLXML 4.0 megköveteli, hogy egy updategram összes oszlopértékét kifejezetten le kell térképezni abban a sémában (akár XDR, akár XSD), amely az XML nézetet a gyermekelemek számára alkotja. Ez a viselkedés eltér az SQLXML korábbi verzióitól, amelyek lehetővé tették egy olyan oszlop értékét, amelyet nem térképeztek le a sémában, ha az a sql:relationship annotációban az idegen kulcs részeként implicit volt. (Fontos megjegyezni, hogy ez a változás nem befolyásolja az elsődleges kulcsértékek gyermekelemekre való terjesztését, ami SQLXML 4.0 esetén is megtörténik, ha a gyermekelem esetében nincs kifejezetten meghatározott érték.
Ha updategramot használsz egy bináris oszlopban lévő adatok módosításához (például az SQL Server képtípusában ), akkor meg kell adnod egy leképezési sémát, amelyben meg kell határozni az SQL Server adattípusát (például sql:datatype="image") és az XML adattípust (például dt:type="binhex" vagy dt:type="binbase64). A bináris oszlop adatait meg kell határozni a updategramban; A sql:URL-encode annotációt, amely a leképezési sémában van megadva, figyelmen kívül hagyja a updategram.
Amikor XSD sémát írsz, ha a sql:relation vagy sql:field annotációhoz megadott érték speciális karaktert tartalmaz, például egy szóköz karaktert (például a "Order Details" tábla nevében), ezt az értéket zárójelben kell zárójelben tartani (például "[Order Details]").
Updategramok használata esetén a lánckapcsolatok nem támogatottak. Például, ha az A és C táblák egy lánckapcsolaton keresztül kapcsolódnak, amely a B táblát használja, akkor a következő hiba jelentkezik, amikor megpróbáljuk futtatni és végrehajtani a updategramot:
There is an inconsistency in the schema provided.Még ha a séma és a updategram egyébként helyes és érvényesen is kialakított, ez a hiba akkor is jelentkezik, ha lánckapcsolat van.
Az updategramok nem engedik a képtípus adatok továbbítását paraméterként frissítések során.
Bináris nagy objektum (BLOB) típusokat, mint például a szöveg/ntext és a képek, nem szabad az <enne> blokkban használni updategramokkal való munka során, mert ez tartalmazza őket az egyidejű vezérlés számára. Ez problémákat okozhat az SQL Serverrel a BLOB típusok összehasonlításának korlátozásai miatt. Például a LIKE kulcsszót a WHERE záradékban használják a szöveges adattípus oszlopainak összehasonlítására; azonban a BLOB típusok esetében, ahol az adatok mérete 8K-nál nagyobb, az összehasonlítások nem sikerülnek.
Az ntext adatban lévő speciális karakterek problémákat okozhatnak az SQLXML 4.0-val a BLOB típusok összehasonlításának korlátozásai miatt. Például a "[Serializable]" használata egy <updategram előtti> blokkjában, amikor egy ntext típusú oszlop párhuzamos ellenőrzésére használjuk, az az alábbi SQLOLEDB hibaleírással kudarcot vall:
Empty update, no updatable rows found Transaction aborted