لماذا أحصل على "تحليل XML: السطر 2 ، الحرف 0 ، بناء جملة المستند غير صحيح" عند الإدراج في خادم MS SQL
-
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 الخاص بك (أو يكون رقم إصدار أقدم).
يجب أن يكون إصدار 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.