sql >> Databáze >  >> RDS >> Sqlserver

Analýza XML – neplatný znak XML (při provádění uložené procedury nezpůsobí spuštění dotazů procedury žádné chyby)

Čisté hádání:

  • Soubor je utf-8 encoded (nebo jakékoli jiné kódování, SQL-Server 2008 nemůže číst nativně).
    • Musíte vědět, že SQL-Server je značně omezený na kódování souborů. CHAR (nebo VARCHAR ) je extended ASCII 1-byte encoding a NCHAR (nebo NVARCHAR ) je UCS-2 2-byte encoding (což je téměř totožné s UTF-16 ).
    • S SQL-Server 2016 (a SP2 pro v2014) byla zavedena další podpora, zejména pro utf-8 .
    • Zkuste otevřít XML pomocí vhodného editoru (např. notepad++) a pokuste se zjistit kódování souboru. Zkuste to uložit jako „unicode / UCS-2 / utf-16“ a opakujte import.
    • Zkuste použít import s CLOB místo BLOB . Čtení souboru jako binárního LargeObject bude brát bajty jeden po druhém. SQL-Server se pokusí číst tyto bajty jako řetězec s pevnou velikostí na znak. Postava LOB může fungovat za zvláštních okolností.
    • Zkontrolujte, zda v prvních dvou bytech není BOM (značka pořadí bajtů)
  • Je tam nějaká špína ve vašem XML
    • Otevřete soubor pomocí HEX-editoru a pokuste se najít podivné kódy
  • Váš kód zpracovává obsah souboru v rámci dynamicky vytvářeného příkazu.
    • V takových případech se někdy setkáte s uvozovkami s zkrácením nebo přerušením řetězce
  • Obecná nápověda:
    • Pokud importujete data a očekáváte problémy, důrazně doporučujeme použít přístup ve dvou krocích
    • Přečtěte svůj soubor do tolerantní pracovní tabulky (s NVARCHAR(MAX) nebo dokonce VARBIANRY(MAX) cílové sloupce) a zkuste v tom pokračovat.
    • Pro změnu souboru před importem může být nutné použít jiný nástroj.



  1. wildfly registrující mysql jako zdroj dat

  2. Přenos dat mezi databázemi pomocí PostgreSQL

  3. Zjednodušení testování jednotky Hlavní uložená procedura, která také nazývá proceduru utility

  4. Seskupte po sobě jdoucí řádky stejné hodnoty pomocí časových úseků