سؤال

لقد تحولنا فقط إلى مرادفات لأشياء الخادم المرتبطة ، ولاحظنا أن إخراج XML الخاص بنا لم يعد صحيحًا. عند إرجاع نتائج XML من عرض ما ، يمكننا الاسم المستعار في العرض وسيتم تعيينه كاسم العنصر. مع المرادفات ، ومع ذلك ، يبدو أنه يتجاهل الاسم المستعار؟ ما زلنا في الغالب في SQL 2005 - لا يبدو أن هذا الخطأ يحدث في مثيلنا لعام 2008. هل هذه مشكلة معروفة ، وأي أفكار لعلاج العمل؟

على سبيل المثال ، هذا ما اعتدنا أن نكون قادرين على القيام به:

select top 3 number from Numbers as elementname for xml auto

<elementname number="0"/><elementname number="1"/><elementname number="2"/>

وهذا ما يحدث مع مرادف:

select top 3 number from Numbers_synonym as elementname for xml auto 

<dbo.Numbers number="0"/><dbo.Numbers number="1"/><dbo.Numbers number="2"/>

كما ترون ، يبدو أن SQL Server يستخدم اسم الكائن الفعلي المرجع بدلاً من الاسم المستعار. هذا يزداد سوءًا بالنسبة لاستفسارات الخادم المتقاطع ، لأنك تحصل على الاسم المكون من أربعة أجزاء بدلاً من الاسم المستعار الجميل. (على سبيل المثال: <rick_server.rick_database.dbo.Numbers number="0"/>...)

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

المحلول

بعض الأحيان FOR XML AUTO هل "الشيء الخطأ" - يمكنك التحكم في اسم عنصر XML إذا كنت تستخدم أكثر مطوّلة:

SELECT TOP 3 number
FROM Numbers_synonym
FOR XML PATH('elementname'), TYPE
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top