微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql-server – VS SQLCLR:函数X具有未解析的模式Y引用

我正在使用Visual Studio 2013创建一个新的sql CLR,并且在Project Properties中将Default Schema设置为’decASM'(是’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 FUNCTION调用都有一个错误

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’,则项目将成功构建.我搜索了项目属性和Google,但找不到如何添加对’decASM’的引用.

解决方法

您还需要创建Schema,作为单独的SSDT对象.仅通过指定要将其用于sqlCLR对象,不会自动为您创建它.你应该能够:

>在项目的任何位置添加新项目(控制班次A)
>选择模板sql Server>安全>架构
>命名项目/文件:decASM
>保存并关闭脚本

它将在您的项目中为此创建一个单独的sql文件,其中包含一个命令CREATE SCHEMA [decASM],并在您发布sqlCLR代码时将其部署.

上面提到的步骤对我使用Visual Studio 2013很有用.

原文地址:https://www.jb51.cc/mssql/77974.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐