Sql server 2008 SQL Server 2008 GEOMETRY.AsGml()在包含联接的视图中

Sql server 2008 SQL Server 2008 GEOMETRY.AsGml()在包含联接的视图中,sql-server-2008,geometry,Sql Server 2008,Geometry,我有一个包含几何数据类型的表。SQL Server 2008附带一个内置函数,用于将这些几何数据类型转换为GML-GEOMETRY.AsGml()。我相信这个函数只不过是一个自定义的用户定义函数 该函数完全按照预期工作,直到我尝试在与其他表/视图连接的视图中使用它为止。在这种情况下,我会收到一条错误消息,大意是“不允许远程函数引用'dbo.PROPERTY.SHAPE.AsGml',并且列名'dbo'找不到或不明确。” 我一直在做的是创建一个初始视图,其中包含获取所需字段所需的所有连接,而几何体

我有一个包含几何数据类型的表。SQL Server 2008附带一个内置函数,用于将这些几何数据类型转换为GML-GEOMETRY.AsGml()。我相信这个函数只不过是一个自定义的用户定义函数

该函数完全按照预期工作,直到我尝试在与其他表/视图连接的视图中使用它为止。在这种情况下,我会收到一条错误消息,大意是“不允许远程函数引用'dbo.PROPERTY.SHAPE.AsGml',并且列名'dbo'找不到或不明确。”

我一直在做的是创建一个初始视图,其中包含获取所需字段所需的所有连接,而几何体字段保持其原始格式。然后,在第二个视图中,我将执行GML转换


这些视图的分层具有明显的性能影响,我想知道为什么我不能在带有连接的视图中执行AsGml()

使用内联Select语句为我解决了这个问题

这不起作用:

SELECT dbo.H1N1_2009.COUNTY, dbo.states.STATE_NAME, dbo.states.geom.AsGml() 
AS GML
FROM dbo.H1N1_2009 INNER JOIN dbo.states ON dbo.H1N1_2009.ID = dbo.states.ID
这项工作:

SELECT     dbo.H1N1_2009.COUNTY, states_1.STATE_NAME,
           (SELECT geom.AsGml() AS Expr1 FROM dbo.states WHERE(ID =dbo.H1N1_2009.ID))  AS GML
FROM       dbo.H1N1_2009 INNER JOIN dbo.states AS states_1 ON dbo.H1N1_2009.ID states_1.ID

希望这对其他人有帮助。

这似乎很落后。我想听听为什么这是必要的。对于更复杂的连接,这是一个真正的难题。