لماذا أحصل على "تحليل XML: السطر 2 ، الحرف 0 ، بناء جملة المستند غير صحيح" عند الإدراج في خادم MS SQL

StackOverflow https://stackoverflow.com/questions/2154635

  •  23-09-2019
  •  | 
  •  

سؤال

أقوم بإدخال كبير في جدول باستخدام ملف تنسيق FMT ، لكنني أحصل على الخطأ التالي:

XML parsing: line 2, character 0, incorrect document syntax

ها هو الكود الخاص بي

BULK INSERT [DM_Flux].[dbo].[Stage] FROM 'C:\temp\data.dat'
WITH (FORMATFILE = 'C:\temp\FormatBcp.fmt')

هنا هو التنسيق (ملف التنسيق القياسي ، وليس XML):

10.0
5
1   SQLCHAR 0   2   ""  1   Id  ""
2   SQLCHAR 0   40  ""  2   Name    ""
3   SQLCHAR 0   50  ""  3   Street  ""
4   SQLCHAR 0   8   ""  4   StreetNo    ""
5   SQLCHAR 0   300 "\r\n"  7   BulkData    ""

لماذا أحصل على خطأ XML في هذا؟

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

المحلول 3

إذا تم ترميز ملف التنسيق كحارس واحد ، فسيعتقد إدراج السائبة تلقائيًا أنه ملف XML ويعامله على هذا النحو. تأكد من تشفير الملف على أنه أنسي ويجب أن تكون بخير.

نصائح أخرى

أيضا نقطة أخرى فقط في حال واجه أي شخص آخر هذا ...

إذا كنت متأكدًا من أن الملف هو ANSI ولكنه لا يزال يحصل على هذا الخطأ ، فتأكد من السطر الأول من ملف التنسيق (رقم الإصدار). يجب أن يطابق رقم الإصدار رقم إصدار SQL الخاص بك (أو يكون رقم إصدار أقدم).

مرجع MSDN:

يجب أن يكون إصدار Utility BCP (bcp.exe) المستخدم لقراءة ملف تنسيق هو نفسه ، أو إصدار لاحق مما تم استخدامه لإنشاء ملف التنسيق. على سبيل المثال ، يمكن لـ SQL Server 2008 BCP قراءة ملف تنسيق الإصدار 9.0 ، والذي تم إنشاؤه بواسطة SQL Server 2005 BCP ، لكن SQL Server 2005 BCP لا يمكنه قراءة ملف تنسيق الإصدار 10.0 ، والذي تم إنشاؤه بواسطة SQL Server 2008 BCP.

طريقة جيدة للتأكد من عدم فشل خادم MS SQL في قراءة تنسيق الإصدار ، وخفض رقم الإصدار في ملف .fmt. تغيير v10.0 إلى 9.0 أو أقل. يمكن لـ MS SQL 2008 قراءة إصدار أقل ولكن عام 2005 لا يمكنه قراءة نسخة أعلى. لذلك قد يساعد تصنيف عدد الإصدار في حل المشكلة.

رقم إصدار الأداة المساعدة BCP:

 9.0 = SQL Server 2005 
10.0 = SQL Server 2008
11.0 = SQL Server 2012
12.0 = SQL Server 2014

للحصول على ملف تنسيق غير XML ، يمكنك الرجوع إلى صفحة Microsoft: http://msdn.microsoft.com/en-us/library/ms191479.aspx.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top