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 2010 数据库项目

Visual Studio 2010 项目到 Visual Studio 2012

在 Visual Studio 2010 数据库项目中生成种子数据

Visual Studio 2010 数据库项目无法识别 SQL 2008 地理数据类型

visual studio 2010中调用另外一个项目中的方法