两个相同的表,两个相同的SQL查询,两个完全不同的结果

时间:2012-02-10 15:11:55

标签: sql xml sql-server-2008 tsql rackspace-cloud

我的任务是将一个古老的(2007)所谓的ASP.NET站点从拥有它的人的办公室中的“私人”服务器迁移到我公司在rackspace上的托管帐户。一切顺利,直到我们切换DNS。事实证明,原始程序员对文件进行了硬编码引用,特别是生成并格式化导航菜单的文件。当我们替换硬编码的引用时,它突然根本不像它应该表现的那样。我跟踪了他用来为菜单生成XML表的查询。

SELECT 
parent.id, 
parent.title, 
'/page.aspx?id=' + isnull(cast(parent.id as varchar),'') + '&name=' + parent.name url, 
siteMapNode.id, siteMapNode.title, 
'/page.aspx?id=' + isnull(cast(siteMapNode.id as varchar),'') + '&name=' + siteMapNode.name url, 
siteMapSubNode.title, 
'/page.aspx?id=' + isnull(cast(siteMapSubNode.id as varchar),'') + '&name=' + siteMapSubNode.name url
FROM page parent 
right join page siteMapNode on siteMapNode.pageid=parent.id and    siteMapNode.active=1 and siteMapNode.hidden=0
left join page siteMapSubNode on siteMapSubNode.pageid=siteMapNode.id and siteMapSubNode.active=1 and siteMapSubNode.hidden=0 
where SiteMapNode.name <> 'home' and parent.menu = '1' and parent.active = 1 and parent.hidden <> 1 
order by parent.orderby, siteMapNode.orderby 
for xml auto

我已经备份了本地数据库,也在他们办公室的那个盒子上,“恢复”到我本地测试数据库的备份,然后从我的测试数据库导入到rackspace的数据库。 (所有这些中间人的东西都是为了绕过他们的防火墙。)因此,对于所有意图和目的,所有3台服务器上使用的源代码,表和查询都是精确的副本。

当我在MSSQL中运行该查询时,这里是我得到的结果的简短摘录:

他们的服务器(版本未知,我必须经过teamviewer才能找到。)和我的服务器(MSSQL 2008 Server 10.0.2531 - 我想也许SP1) correct formatting

Rackspace的服务器(MSSQL 2008服务器10.0.4064,我认为可能是SP2) Incorrect formatting

非常感谢任何有关机架空间行为如此奇怪的建议,提示和想法。看起来它显然与服务器的差异有关,但我不知道它是版本,SP,设置还是什么。如果有人见过类似的东西,我很乐意听到你从中学到的东西。我只是一个谦虚的程序员,绝对不是SQL专家。

编辑:这是表的架构,id是主键,命名不佳的pageid实际上更像是父页面id。 enter image description here

我已尝试使用和不使用xml auto查看它。当我为xml auto取消时,它以稍微不同的顺序返回相同的结果,但是当我将查询的第4行从siteMapNode.id更改为parent.pageid时,结果显示相同的顺序。添加xml自动显示与上面的图像相同的结果。我将尝试尝试使用xml路径,感谢您的建议!

0 个答案:

没有答案