Visual Studio 2010 数据库项目无法识别 SQL 2008 地理数据类型
Posted
技术标签:
【中文标题】Visual Studio 2010 数据库项目无法识别 SQL 2008 地理数据类型【英文标题】:Visual Studio 2010 database project does not recognize SQL 2008 geography data type 【发布时间】:2010-05-13 20:58:15 【问题描述】:我在 Visual Studio 2010 中创建了一个新的 SQL 2008 数据库项目,并用本地 SQL Express 数据库的内容填充它。当我尝试构建数据库项目时,出现此错误: SQL03006:列:[dbo].[table1].[geog] 具有对 Sql 类型 [dbo].[geography] 的未解析引用
我进行了一些搜索,它可能缺少对 Microsoft.SqlTypes.dbschema 的引用,但我在任何地方都找不到:http://www.incyclesoftware.com/blog/post/2009/07/07/Resolve-references-Error-TSD03006-IN-VSTS-DB-GDR.aspx
数据类型真的不支持开箱即用还是我遗漏了什么?
【问题讨论】:
【参考方案1】:找到了;在表或存储过程中,数据类型需要以 [sys] 为前缀,如下所示:
CREATE TABLE [dbo].[Location] (
[objectId] BIGINT NOT NULL,
[latitude] FLOAT NOT NULL,
[longitude] FLOAT NOT NULL,
[geog] [sys].[geography] NULL,
[geom] [sys].[geometry] NULL
);
【讨论】:
谢谢!在 Visual Studio 2012 - 表设计中为我工作。我的几何列在 CLR 类型下显示为 sys.geometry。【参考方案2】:在将 Sql Type 几何图形引入 DB 项目后,我遇到了同样的问题(在我与 SQL 2008 模式进行比较时,我的 DB 项目版本设置为“2005”)
我通过将数据库项目版本(属性 -> 项目设置 -> 项目版本)更改为 2008 解决了这个问题。
之后,当您右键单击引用(用于数据库项目)或项目本身时,您应该会看到一个选项“添加 SQL Server 2008 CLR 类型”。这将添加您需要的参考并解决问题。
这是为我添加在 proj XML 中生成的引用的内容:
<ItemGroup> <ArtifactReference Include="$(VSTSDBDirectory)\Extensions\SqlServer\2008\DBSchemas\Microsoft.SqlTypes.dbschema"> <HintPath>..\..\..\..\..\Program Files (x86)\Microsoft Visual Studio 9.0\VSTSDB\Extensions\SqlServer\2008\DBSchemas\Microsoft.SqlTypes.dbschema</HintPath> </ArtifactReference> </ItemGroup>
【讨论】:
【参考方案3】:我从未获得“添加 SQL Server 2008 CLR 类型”选项,但我能够通过编辑我的 .dbproj 文件并将 LoadSqlClrTypes 值更改为 True 来解决此问题:
<LoadSqlClrTypes>True</LoadSqlClrTypes>
【讨论】:
你到底是在哪里添加的?在 VS.NET 2012 中看不到此设置 我只是直接将它添加到dbProj文件中的XML以上是关于Visual Studio 2010 数据库项目无法识别 SQL 2008 地理数据类型的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2010 项目到 Visual Studio 2012
在 Visual Studio 2010 数据库项目中生成种子数据