2

我在Visual Studio 2010中创建了一个新的SQL 2008数据库项目,并在其中填充了本地SQL Express数据库的内容。当我尝试构建数据库项目时,出现以下错误: SQL03006:列:[dbo]。[table1]。[geog]有一个未解析的Sql类型[dbo]的引用。做了一些搜索和它可能会丢失到Microsoft.SqlTypes.dbschema的引用,但我找不到任何地方:http://www.incyclesoftware.com/blog/post/2009/07/07/Resolve-references-Error-TSD03006-IN-VSTS-DB-GDR.aspxVisual Studio 2010数据库项目无法识别SQL 2008地理数据类型

是数据类型真的不支持开箱即用的还是我失去了一些东西?

回答

3

找到它;在表或存储过程中的数据类型必须与[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 
); 
+0

没有为我工作了[日期]类型(不是DATETIME) – bbqchickenrobot 2013-01-13 03:13:58

+0

谢谢!在Visual Studio 2012中为我工作 - 表设计。我的geom列在CLR Types下显示为sys.geometry。 – riaandelange 2013-04-15 09:57:11

+0

谢谢,它为我工作。 – 2014-01-29 14:17:10

2

我已经介绍SQL类型几何在我的情况下,DB计划(DB项目版本后,设置有同样的问题>项目设置 - - 为“2005”,而我是比较到SQL 2008的架构)

我通过改变数据库项目版本(属性解决问题>工程版)至2008年

后,当你右键单击References(对于数据库项目)或项目本身,您应该看到一个选项“添加SQL Server 2008 CLR类型”。这将添加您需要的参考,并将解决问题。

这里是添加在该凸出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> 
1

我从来没有得到“添加SQL Server 2008的CLR类型”选项,但我可以通过编辑来解决这个问题,我的.dbproj文件,并改变LoadSqlClrTypes值设置为True:

<LoadSqlClrTypes>True</LoadSqlClrTypes> 
+0

你究竟在哪里添加了这个?在VS.NET 2012中看不到这个设置 – bbqchickenrobot 2013-01-13 03:14:15

+0

我只是直接将它添加到dbProj文件中的XML中 – 2013-03-18 04:04:17

相关问题