Pregunta

Hemos acaba de cambiar a sinónimos de cosas servidor vinculado, y se dio cuenta de que nuestra salida para XML ya no es correcta. Al devolver resultados XML desde un punto de vista, podríamos asignar un alias a la vista y que sería asignado como el nombre del elemento. Con sinónimos, sin embargo, parece ignorar el alias? Todavía estamos sobre todo en SQL 2005 - no parece de este error a suceder en nuestro ejemplo 2008. ¿Es un problema conocido, y algunas ideas para soluciones temporales?

Por ejemplo, esto es lo que solía ser capaz de hacer:

select top 3 number from Numbers as elementname for xml auto

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

Y esto es lo que sucede con un sinónimo:

select top 3 number from Numbers_synonym as elementname for xml auto 

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

Como se puede ver, SQL Server parece usar el nombre del objeto real que se hace referencia en lugar del alias. Esto empeora para las peticiones al servidor transversales, debido a que obtiene el nombre de cuatro partes en lugar del alias agradable. (Por ejemplo: <rick_server.rick_database.dbo.Numbers number="0"/> ...)

¿Fue útil?

Solución

A veces FOR XML AUTO hace la "cosa incorrecta" - se puede controlar el nombre del elemento XML si utiliza el fraccionadamente más detallada:

SELECT TOP 3 number
FROM Numbers_synonym
FOR XML PATH('elementname'), TYPE
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top