Sql server VS SQLCLR:函数X对架构Y的引用未解析
我正在使用Visual Studio 2013创建一个新的SQL CLR,并且在项目属性中将默认模式设置为“decASM”(was“dbo”)。当我进行此更改并重建项目时,VS将生成一个sql文件,如下所示: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
--------------------------------------------------------------------------------
-- 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
- 保存并关闭脚本
create SCHEMA[decASM]
,并将在您发布SQLCLR代码时部署它
上述步骤在我使用Visual Studio 2013时确实有效。您还必须将
生成操作设置为生成。否则错误将继续显示
在下面的屏幕截图中,Selective.sql
是我添加到项目中的模式对象。点击F4进入属性窗口
我是否必须在数据库中运行创建架构脚本,然后将数据库导入到SSDT项目中?@user1490835如果您的实际问题是关于架构的,那么我会说您不需要首先在DB中创建它。但由于您实际上是在询问,我会说您的问题与模式完全无关。我会在你发布的问题上解决这个问题。