我在SSRS(SQL Server 2014和VS2013 Shell)中实现我认为应该是一个相当基本的报告时遇到了麻烦。我在一家位于英国的公司工作,我希望使用地图功能显示各种数据。首先,我只想获取客户销售数据并将其绘制在基本的英国地图上。为此,我构建了一个查询,该查询使用客户邮政编码来获取纬度和经度值。然后我使用STPointFromText将它们转换为Geography数据类型,如下所示:
geography::STPointFromText('POINT(' + CAST(longitude AS VARCHAR(20)) + ' ' +
CAST(latitude AS VARCHAR(20)) + ')', 4326) AS Geog
此数据集包含销售数据,因此分析和空间数据都在一个地方(假设我已正确理解此部分!)。
当我在SSMS中查询此数据并在“空间”选项卡下查看结果时,它看起来非常有前途,即非常清楚地描绘了英国的形状:
但是,当我尝试在SSRS中表示这一点时,它就会崩溃。使用SQL Server空间查询选项作为我的数据源,并使用我之前在SSMS中构建和运行的查询,我不断得到一个弹出窗口,其中显示:
'无法确定指定数据集字段中的空间数据类型:Geog'
从这里没有任何作用。我没有看到任何地图或像我在SSRS中所做的任何点。我一直在寻找几个小时但并没有真正找到解决方案,虽然我确实在MSDN上找到了这个:
https://msdn.microsoft.com/en-us/library/hh272532.aspx
'您无法在Visual Studio中使用数据集设计器来返回返回SQL Server空间类型的查询。数据集设计器不支持用户定义的类型(UDT),SQL Server空间类型(SqlGeometry和SqlGeography)属于哪个类别。
我读过的各种文章显示人们只是像我一样构建一个查询,然后将其添加为数据集,之后它会立即检测到空间列和类型。但是,许多确实似乎是SQL Server 2008 R2。上面的文章意味着在GAC中创建文件和创建Windows表单应用程序,这可能需要VS Pro和其他小工具。
如果有人能指出我出错的地方,我将不胜感激!
提前致谢。