Domanda

Abbiamo appena passato a sinonimi di roba server collegato, e ho notato che la nostra produzione FOR XML non è più corretta. In caso di restituzione risultati XML da una vista, potremmo alias la vista e che sarebbe stato assegnato come il nome dell'elemento. Con i sinonimi, tuttavia, sembra ignorare l'alias? Siamo ancora in gran parte su SQL 2005 - questo bug non sembra accadere sulla nostra istanza del 2008. Si tratta di un problema noto, e qualche idea per work-around?

Per esempio, questo è quello che abbiamo usato per essere in grado di fare:

select top 3 number from Numbers as elementname for xml auto

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

E questo è ciò che accade con un sinonimo:

select top 3 number from Numbers_synonym as elementname for xml auto 

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

Come si può vedere, SQL Server sembra utilizzare il nome dell'oggetto attuale fa riferimento al posto dell'alias. Questo peggiora per le query di server trasversali, perché si ottiene il nome in quattro parti, invece dell'alias bello. (Ad esempio: <rick_server.rick_database.dbo.Numbers number="0"/> ...)

È stato utile?

Soluzione

A volte FOR XML AUTO fa la "cosa sbagliata" - è possibile controllare il nome dell'elemento XML se si utilizza il frazioni più prolisso:

SELECT TOP 3 number
FROM Numbers_synonym
FOR XML PATH('elementname'), TYPE
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top