it-swarm.com.de

FÜGEN Sie XML in die SQL Server 2008-Datenbank ein

Hallo, ich versuche, einige XML-Daten in eine Tabelle unter SQL Server 2008 einzufügen. Allerdings erhalte ich diesen Fehler immer wieder.

XML-Analyse: Zeile 1, Zeichen 39, Kodierung kann nicht gewechselt werden

Die Datenbankspalte filemeta verwendet den XML-Datentyp. Ich habe die Kodierung auf UTF-16 umgestellt, was meiner Meinung nach für das Hinzufügen von XML-Daten notwendig ist.

INSERT INTO testfiles
  (filename, filemeta) 
VALUES 
  ('test.mp3', '<?xml version="1.0" encoding="utf-16" standalone="yes"?><!--This is a test XML file--><filemeta filetype="Audio"><Comments /><AlbumTitle /><TrackNumber /><ArtistName /><Year /><Genre /><TrackTitle /></filemeta>');

Hilfe, ich stecke fest.

Hinweis: Ich habe das XML mit XMLTextWriter erstellt.

24
wonea

Ja, es gibt Probleme, wenn Sie versuchen, XML in SQL Server 2008 einzufügen und XML eine Kodierungsanweisungszeile enthält.

Normalerweise komme ich mit der CONVERT-Funktion herum, mit der ich SQL Server anweisen kann, diese Anweisungen zu überspringen. Verwenden Sie etwa Folgendes:

INSERT INTO testfiles
  (filename, filemeta) 
VALUES 
  ('test.mp3', CONVERT(XML, N'<?xml version="1.0" encoding="utf-16" standalone="yes"?>......', 2));

Es hat mir definitiv geholfen, verschiedene verschlüsselte XML-Dateien in SQL Server zu integrieren.

Sehen Sie sich die MSDN-Dokumente zu CAST und CONVERT an. Etwas weiter unten gibt es eine Reihe von Stilen, die Sie für CONVERT mit XML und einige Erklärungen dazu verwenden können.

30
marc_s

Sie müssen lediglichNvor Ihrer XML-Zeichenfolge einschließen, um Unicode zu erzeugen.

INSERT INTO testfiles
  (filename, filemeta) 
VALUES 
  ('test.mp3', N'<?xml version="1.0" encoding="utf-16" standalone="yes"?><!--This is a test XML file--><filemeta filetype="Audio"><Comments /><AlbumTitle /><TrackNumber /><ArtistName /><Year /><Genre /><TrackTitle /></filemeta>');
18
Joe Stefanelli

Das hat für mich ohne Fehler funktioniert:

DECLARE @input XML 
SET @input = N'<?xml version="1.0" encoding="utf-16" standalone="yes"?><!--This is a test XML file--><filemeta filetype="Audio"><Comments /><AlbumTitle /><TrackNumber /><ArtistName /><Year /><Genre /><TrackTitle /></filemeta>'

INSERT INTO testfiles (filename, filemeta)
VALUES ('test.mp3', @input);
0
Talha Imam