Frage

Wir haben gerade um Synonyme für den Verbindungsserver Sachen eingeschaltet, und bemerkte, dass unsere FOR XML-Ausgabe nicht mehr korrekt ist. Wenn XML-Ergebnisse aus einer Ansicht zurückkehren, könnten wir die Ansicht, alias und das würde als Elementnamen zugeordnet werden. Mit Synonyme, jedoch scheint es den Alias ??zu ignorieren? Wir sind immer noch hauptsächlich auf SQL 2005 - dieser Fehler scheint nicht auf unsere 2008-Instanz geschehen. Ist das ein bekanntes Problem, und alle Ideen für Workarounds?

Zum Beispiel ist es das, was wir tun können verwendet:

select top 3 number from Numbers as elementname for xml auto

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

Und das ist, was mit einem Synonym passiert:

select top 3 number from Numbers_synonym as elementname for xml auto 

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

Wie Sie sehen können, scheint SQL Server den Namen des tatsächlichen referenzierten Objekts anstelle des Alias ??zu verwenden. Dies wird noch schlimmer für Cross-Server-Abfragen, weil Sie den vierteiligen Namen statt den schönen alias bekommen. (ZB: <rick_server.rick_database.dbo.Numbers number="0"/> ...)

War es hilfreich?

Lösung

Manchmal FOR XML AUTO tut die „Falschen“ - Sie die XML-Elementnamen steuern können, wenn Sie die fraktioniert ausführlicher verwenden:

SELECT TOP 3 number
FROM Numbers_synonym
FOR XML PATH('elementname'), TYPE
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top