如何执行直接添加到SSDT sqlproj中的SQLCLR UDF并解决参考错误SQL71501

如何执行直接添加到SSDT sqlproj中的SQLCLR UDF并解决参考错误SQL71501,第1张

如何执行直接添加到SSDT sqlproj中的SQLCLR UDF并解决参考错误SQL71501

您必须添加包含CLR代码的已编译DLL作为参考。因此,在您的MyDb SSDT项目->参考(右键单击)->添加参考下,浏览到DLL。

如果您在同一解决方案中有CLR(类库)项目,则可能可以引用该项目而不是DLL,但是在我的情况下,我引用的是DLL(为单独的解决方案编译)。

至于

AS EXTERNAL NAME
行的格式:

AS EXTERNAL NAME [AssemblyName].[ClassName].[FunctionName]

注意: 对于CLR对象,为了简化起见,我从类/代码周围删除了名称空间,因为此步骤通常是最有问题的。容易混淆AssmeblyName /
DLL名称/命名空间。通过访问“项目属性”->“应用程序”->“程序集名称:”,可以在CLR类库项目中找到AssemblyName。我会从中删除所有非字母数字/空格,只是为了简化名称并排除出现问题。

因此,我会尝试一下,一旦您能正常工作,如果您真的想要名称空间,则可以添加名称空间并从中找出语法,至少您知道其他部分是正确的。


确定,您实际上在同一个SSDT项目中有一个* .cs文件。所以在这种情况下,如果您的代码是这样的:

CS文件:

public partial class UserDefinedFunctions{    [Microsoft.SqlServer.Server.SqlFunction]    public static SqlString SqlFunction1()    {        // Put your pre here        return new SqlString (string.Empty);    }}

SQL文件:

CREATE PROCEDURE ClrMethod1  RETURNS [int] WITH EXECUTE AS CALLERAS EXTERNAL NAME [MyDB].[UserDefinedFunctions].[SqlFunction1]

这为我编译。 注意: 再次没有使用名称空间。当我执行Add New Item …时,生成的代码没有命名空间。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5508541.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存