Reine Vermutung:
- Die Datei ist
utf-8
codiert (oder jede andere Codierung, SQL-Server 2008 kann nicht nativ lesen).- Sie müssen wissen, dass SQL-Server mit Dateikodierungen ziemlich eingeschränkt ist.
CHAR
(oderVARCHAR
) ist eineextended ASCII 1-byte encoding
undNCHAR
(oderNVARCHAR
) istUCS-2 2-byte encoding
(was fast identisch mitUTF-16
ist ). - Mit SQL-Server 2016 (und SP2 für v2014) wurde einige weitere Unterstützung eingeführt, insbesondere für
utf-8
. - Versuchen Sie, Ihr XML mit einem geeigneten Editor (z. B. Notepad++) zu öffnen und versuchen Sie, die Kodierung der Datei herauszufinden. Versuchen Sie, dies als "unicode / UCS-2 / utf-16" zu speichern, und versuchen Sie den Import erneut.
- Versuchen Sie, Ihren Import mit
CLOB
zu verwenden stattBLOB
. Lesen der Datei als binär LargeObject übernimmt die Bytes nacheinander. Der SQL-Server wird versuchen, diese Bytes als String mit fester Größe pro Zeichen zu lesen. Ein Charakter LOB kann unter besonderen Umständen funktionieren. - Überprüfen Sie die ersten beiden Bytes auf eine
BOM
(Byte-Order-Marke)
- Sie müssen wissen, dass SQL-Server mit Dateikodierungen ziemlich eingeschränkt ist.
- Es gibt etwas Schmutz innerhalb Ihres XML
- Öffnen Sie die Datei mit einem HEX-Editor und versuchen Sie, seltsame Codes zu finden
- Ihr Code verarbeitet den Inhalt der Datei innerhalb einer dynamisch erstellten Anweisung.
- In solchen Fällen stoßen Sie manchmal auf abgeschnittene oder Zeichenfolgen brechende Anführungszeichen
- Allgemeiner Hinweis:
- Wenn Sie Daten importieren und Probleme erwarten, wird dringend empfohlen, einen 2-Stufen-Ansatz zu verwenden
- Lesen Sie Ihre Datei in eine tolerante Staging-Tabelle ein (mit
NVARCHAR(MAX)
oder sogarVARBIANRY(MAX)
Zielspalten) und versuchen Sie, damit fortzufahren. - Möglicherweise müssen Sie ein anderes Tool verwenden, um Ihre Datei vor dem Importieren zu ändern.