Sql server VS SQLCLR:函数X对架构Y的引用未解析

Sql server VS SQLCLR:函数X对架构Y的引用未解析,sql-server,visual-studio-2013,schema,sql-server-data-tools,sqlclr,Sql Server,Visual Studio 2013,Schema,Sql Server Data Tools,Sqlclr,我正在使用Visual Studio 2013创建一个新的SQL CLR,并且在项目属性中将默认模式设置为“decASM”(was“dbo”)。当我进行此更改并重建项目时,VS将生成一个sql文件,如下所示: -------------------------------------------------------------------------------- -- This code was generated by a tool. -- -- Changes to t

我正在使用Visual Studio 2013创建一个新的SQL CLR,并且在项目属性中将默认模式设置为“decASM”(was“dbo”)。当我进行此更改并重建项目时,VS将生成一个sql文件,如下所示:

--------------------------------------------------------------------------------
--     This code was generated by a tool.
--
--     Changes to this file may cause incorrect behavior and will be lost if
--     the code is regenerated.
--------------------------------------------------------------------------------

CREATE FUNCTION [decASM].[ExecFoxPro_SayHello] (@name [nvarchar](MAX))
RETURNS [nvarchar](MAX)
AS EXTERNAL NAME [dcFoxProAssy].[UserDefinedFunctions].[ExecFoxPro_SayHello];

GO

CREATE FUNCTION [decASM].[GetAllowedPaths] (@serviceUrl [nvarchar](MAX))
RETURNS [nvarchar](MAX)
AS EXTERNAL NAME [dcFoxProAssy].[UserDefinedFunctions].[GetAllowedPaths];

GO

CREATE FUNCTION [decASM].[GetTableRowCount] (@serviceUrl [nvarchar](MAX), @foxProPath [nvarchar](MAX), @tableName [nvarchar](MAX))
RETURNS [nvarchar](MAX)
AS EXTERNAL NAME [dcFoxProAssy].[UserDefinedFunctions].[GetTableRowCount];

GO
每个CREATE函数调用都有一个错误:

Error   1   SQL71501: Function: [decASM].[ExecFoxPro_SayHello] has an unresolved reference to Schema [decASM].  
Error   2   SQL71501: Function: [decASM].[GetAllowedPaths] has an unresolved reference to Schema [decASM].  
Error   3   SQL71501: Function: [decASM].[GetTableRowCount] has an unresolved reference to Schema [decASM].

如果我将默认模式更改回“dbo”,项目将成功构建。我已经搜索了项目属性和谷歌,但找不到任何关于如何添加对“decASM”的引用

您还需要创建模式,作为一个单独的SSDT对象。仅通过指定要将其用于SQLCLR对象,它不会自动为您创建。您应该能够:

  • 将新项(Control+Shift+A)添加到项目的任意位置
  • 选择模板SQL Server安全性架构
  • 将项目/文件命名为:
    decASM
  • 保存并关闭脚本
它将为此在您的项目中创建一个单独的SQL文件,其中包含单个命令
create SCHEMA[decASM]
,并将在您发布SQLCLR代码时部署它


上述步骤在我使用Visual Studio 2013时确实有效。

您还必须将
生成操作设置为
生成
。否则错误将继续显示

在下面的屏幕截图中,
Selective.sql
是我添加到项目中的模式对象。点击F4进入属性窗口


我是否必须在数据库中运行创建架构脚本,然后将数据库导入到SSDT项目中?@user1490835如果您的实际问题是关于架构的,那么我会说您不需要首先在DB中创建它。但由于您实际上是在询问,我会说您的问题与模式完全无关。我会在你发布的问题上解决这个问题。