2

我在 Visual Studio 2010 中创建了一个新的 SQL 2008 数据库项目,并用本地 SQL Express 数据库的内容填充它。当我尝试构建数据库项目时,出现此错误: SQL03006: Column: [dbo].[table1].[geog] has an unresolved reference to Sql Type [dbo].[geography]

我做了一些搜索,它可能缺少对 Microsoft.SqlTypes.dbschema 的引用,但我在任何地方都找不到:http: //www.incyclesoftware.com/blog/post/2009/07/07/Resolve -references-Error-TSD03006-IN-VSTS-DB-GDR.aspx

数据类型真的不支持开箱即用还是我遗漏了什么?

4

3 回答 3

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
);
于 2010-05-22T15:29:52.083 回答
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>
于 2012-01-26T19:26:29.337 回答
1

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

<LoadSqlClrTypes>True</LoadSqlClrTypes>
于 2012-02-11T05:22:53.270 回答