SQL Server 2005 FOR XML子句

SQL Server 2005 FOR XML子句,sql,xml,sql-server-2005,Sql,Xml,Sql Server 2005,我们遇到了一个问题,即在两个不同的服务器上运行完全相同的查询,运行完全相同的service pack和update-9.0.4211,但接收到两个格式不同的XML结果集。有人知道这是为什么/如何发生的吗? SQL Server生成结果XML格式的方式是否涉及设置/模式?我知道我们可以使用PATH选项转换xml,但此时所有客户机代码都是使用其中一个结果集的格式编写的,使用PATH选项仍然无法获得AUTO选项对正确格式所做的操作 查询- SELECT distinct operation.ope

我们遇到了一个问题,即在两个不同的服务器上运行完全相同的查询,运行完全相同的service pack和update-9.0.4211,但接收到两个格式不同的XML结果集。有人知道这是为什么/如何发生的吗? SQL Server生成结果XML格式的方式是否涉及设置/模式?我知道我们可以使用PATH选项转换xml,但此时所有客户机代码都是使用其中一个结果集的格式编写的,使用PATH选项仍然无法获得AUTO选项对正确格式所做的操作

查询-

SELECT distinct 

operation.operationid,
@zoneId as ZoneID,
member.name, IsNull(member.firstname, '') as firstname, IsNull(member.lastname, '') as lastname, IsNull(member.email, '') as email, IsNull(member.memberid, '') as memberid, IsNull(member.type, '') as type, IsNull(member.AppMemberID, '') as AppMemberID
FROM IQSECURE_TaskOperations operation 
join IQSECURE_RoleTasks r on operation.taskid = r.taskid
join IQOBASE_Rosters roster on r.roleid = roster.roleid
left outer join IQObase_Members member on roster.rosterid = member.Rosterid 
WHERE operation.operationid = @operationid AND roster.zoneid = @zoneId and member.memberid is not null


union

SELECT distinct 
operation.operationid,
@zoneID as ZoneID,
member.name, IsNull(member.firstname, '') as firstname, IsNull(member.lastname, '') as lastname, IsNull(member.email, '') as email, IsNull(member.memberid, '') as memberid, IsNull(member.type, '') as type, IsNull(member.AppMemberID, '') as AppMemberID
FROM IQSECURE_TaskOperations operation 
join IQSECURE_RoleTasks r on operation.taskid = r.taskid
join IQOBASE_Rosters roster on r.roleid = roster.roleid
left outer join IQOBASE_Members_Exploded member on roster.rosterid = member.Rosterid 
WHERE operation.operationid = @operationid AND roster.zoneid = @zoneid and member.memberid is not null

ORDER BY IsNull(member.type, ''), IsNull(member.lastname, ''), IsNull(member.firstname, ''), member.name

FOR XML AUTO, XMLDATA
如果需要,可以提供返回的xml

提前感谢您提供的任何帮助


Jon

您可以检查数据库是否存在任何差异:

SELECT * 
FROM sys.configurations
ORDER BY name ;

我还会检查你正在使用的客户端。如果您使用的是SQL Management Studio,则有一个菜单选项“工具/选项”。此设置可能会影响您看到的内容。

此问题分为两部分。这两个数据库并不完全相同,一个具有SQL 2000兼容模式,另一个具有SQL 2005兼容模式。使用SQL 2000生成正确的XML格式。因此,一个修复方法是使另一个SQL 2000兼容。另一个解决方案是重写select而不使用UNION。由于某种原因,联合会导致了不正确的XML格式

好的,要么提供XML,要么解释差异:)谢谢,但我使用同一个客户机访问两台服务器。