Při použití XQuery načíst hodnotu prvek XML SQL Server 2005 se zobrazí hodnota NULL

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:914638
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Chyba č: 20011171 (SQLBUDT)
Příznaky
Zobrazí hodnotu NULL při použití XQuery načíst hodnotu prvek XML, když jsou splněny následující podmínky:
  • Prvek XML je deklarován jako komplexní typ, který má jednoduchý obsah definice přidružené schématu.
  • Smíšené atribut deklarace prvku XML v definici schématu přidružené hodnotu true.
  • Použijte funkci data načíst hodnotu prvek XML.
Příčina
K tomuto problému dochází, protože hodnota prvek XML je zpracován jako hodnota vložené do prvku XML při prvek XML je deklarován jako komplexní typ, který má jednoduchý obsah a kombinovaného obsahu. Funkce dat tedy nelze načíst zadaný hodnotu prvek XML. Obvykle hodnotu prvek XML je zpracován jako zadanou hodnotu podřízený prvek XML.
Řešení

Informace o aktualizaci Service Pack

Chcete-li tento problém vyřešit, získejte nejnovější aktualizace service pack pro Microsoft SQL Server 2005. Další informace naleznete následujícím článku znalostní databáze Microsoft Knowledge Base:
913089Jak získat nejnovější aktualizaci service pack pro SQL Server 2005
Jak potíže obejít
Chcete-li tento problém vyřešit, postupujte takto:
  1. Musíte změnit sloupec tabulky má jeho zadávání dat ověřen podle problematické kolekci schématu XML. Tento sloupec tabulky musí být změněn z zadaný sloupec XML na netypovou sloupec XML. Pomocí příkazu Transact-SQL, která je podobná následující:
    ALTER TABLE <TableName> ALTER COLUMN <ColumnName> XMLGO
  2. Přetažení existující kolekci schématu XML. Pak vytvořte nové kolekce schématu XML, který má stejné definice jako původní schéma XML s tím rozdílem, že hodnota smíšené atribut prvku deklarace XML je nastavena na hodnotu false. Pomocí příkazu Transact-SQL, která je podobná následující:
    DROP XML SCHEMA COLLECTION <OldSchemaName>GOCREATE XML SCHEMA COLLECTION <NewSchemaName> AS N’<NewSchemaDefinition>’GO
  3. Nastavit sloupce tabulky zadaný sloupec XML, který ověřuje proti nové kolekce schématu XML. Pomocí příkazu Transact-SQL, která je podobná následující:
    ALTER TABLE <TableName> ALTER COLUMN <ColumnName> XML(<NewSchemaName>)GO
Poznámka:<TableName> představuje název tabulky. <ColumnName> představuje název sloupce tabulky XML. <OldSchemaName> představuje název kolekce staré problematické schématu. <NewSchemaName> představuje název nové kolekce schématu. <NewSchemaDefinition> představuje kód definuje nové kolekce schématu.
Prohlášení
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt. Tento problém byl poprvé opraven v Microsoft SQL Server 2005 Service Pack 1.
Další informace
Pro komplexní typ, který má jednoduchý obsah nedoporučujeme nastavit hodnotu smíšené atribut komplexní typ na hodnotu true. Specifikace na struktur schématu XML, která je k dispozici na webu webu Consortium (W3C) také popisuje tento problém. Další informace viz "3.4.3" část a "3.4.4" oddílu na následujícím webu:

Postup reprodukce problému

  1. Otevřete SQL Server 2005 Management Studio.
  2. Připojit k instanci serveru SQL.
  3. Rozbalte databáze a klepněte na databázi, kterou chcete upravit.
  4. V nabídce soubor přejděte na příkaz Nový a potom klepněte na příkaz Databázový stroj dotaz. Zobrazí se okno Editor dotazů.
  5. Vložit následující příklad kódu v okně Query Editor:
    create xml schema collection myschema as N'<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">	<xs:element name="ElementName" type="xs:integer" />			<xs:complexType name="newct" mixed="true">		<xs:simpleContent>			<xs:extension base="xs:integer">				<xs:attribute name="bar" type="xs:integer" />			</xs:extension>		</xs:simpleContent>	</xs:complexType></xs:schema>'gocreate table xml_test (pk int primary key identity(1,1), xmlcol xml(myschema))goinsert xml_test values ('<ElementName xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="newct" bar="10">30</ElementName>')goinsert xml_test values ('<ElementName>30</ElementName>')goselect xmlcol.query('data(/ElementName)')from xml_test
Výstup je podobná následující:
<empty>30
Poznámka V tento výstup <empty>označuje nic zobrazí.

Však výstup je očekáváno podobná následující:
3030
Odkazy
Další informace o funkci data XQuery na webu Microsoft Developer Network (MSDN):

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 914638 - Poslední kontrola: 12/09/2015 04:40:44 - Revize: 2.3

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition

  • kbnosurvey kbarchive kbmt kbsql2005presp1fix kbsql2005xml kbsql2005tsql kbexpertiseadvanced kbtshoot kbprb KB914638 KbMtcs
Váš názor