1

我创建了一个用于 SQL Server 2008 的 CLR UDT,现在正尝试从数据库项目中实际使用它。

  • CLR UDT 项目和数据库项目在 Visual Studio 中的同一解决方案中
  • 两者都在解决方案部署设置中设置为部署
  • 它们都在各自的项目设置中配置为部署到同一个数据库
  • 我添加了一个引用并确认了从数据库项目到 CLR UDT 项目的结果依赖项

尽管如此,当我尝试“部署解决方案”时,它会构建(注意:不会在任何地方部署)SQL CLR 项目,然后开始通过数据库项目的“验证项目模型”并Error SQL03006: Column [schema].[table].[column] has an unresolved reference to Sql Type [typeschema].[typename].在我所在的数据库列上抛出使用 CLR 类型。

我尝试进入 Tools -> Options -> Database Tools -> Schema Compare -> Microsoft SQL Server 2008 并在 Object Types 下将其设置为 ignore User-Defined Types (CLR),但这没有任何明显的效果。

如果我将 CLR UDT 项目部署到数据库,则通过 SQL Server Management Studio 进入该数据库和DECLARE该类型的变量,这可以正常工作(如预期的那样)。因此,这很明显与 Visual Studio 的模型有效性概念有关,而不是仅尝试(并以正确的顺序执行操作)可能是部署结果的实际问题。

谷歌显然没有帮助。我错过了什么?

4

1 回答 1

1

我找到了答案,当我意识到发生了什么但在那之前并不那么明显时,这真的很简单。

所需要的是CREATE TYPE命令添加到数据库项目中的项目创建脚本,以便 CLR UDT 成为 SQL Server 所知道的。Visual Studio 在程序集部署时自动执行此操作,但在数据库项目模型验证期间显然不考虑它。

就位后,一切似乎都按预期CREATE TYPE工作,不需要忽略错误。

于 2013-05-06T11:31:58.117 回答