سؤال

مرحبًا ، أحاول إدراج بعض بيانات XML في جدول على SQL Server 2008. ومع ذلك ، إلا أنني أواصل الحصول على هذا الخطأ ؛

تحليل XML: السطر 1 ، الحرف 39 ، غير قادر على تبديل الترميز

يستخدم عمود قاعدة البيانات FileMeta نوع بيانات XML ، وقد قمت بتبديل الترميز إلى UTF-16 الذي أعتقد أنه ضروري لإضافة بيانات XML.

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>');

مساعدة ، أنا عالق.

NB: قمت بإنشاء XML مع XMLTextWriter.

هل كانت مفيدة؟

المحلول

نعم ، هناك مشكلات عندما تحاول إدراج XML في SQL Server 2008 ويحتوي XML على خط تعليمات ترميز.

عادة ما أتجول باستخدام CONVERT الوظيفة التي تسمح لي بتوجيه خادم SQL لتخطي هذه التعليمات - استخدم شيئًا كهذا:

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

لقد ساعدني ذلك بالتأكيد في الحصول على العديد من أشياء XML المشفرة في SQL Server.

انظر مستندات MSDN على الممثلين وتحويلها - قليلاً أسفل الصفحة ، هناك عدد من الأساليب التي يمكنك استخدامها CONVERT مع XML وبعض التفسيرات عنهم.

نصائح أخرى

تحتاج فقط إلى تضمين ن أمام سلسلة XML لجعلها أحادية.

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>');

هذا عمل بالنسبة لي دون أي أخطاء:

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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top