gpt4 book ai didi

sql-server - 如何解决VS2013错误SQL71501 : Procedure X has an unresolved reference to Assembly Y?

转载 作者:行者123 更新时间:2023-12-03 02:02:48 24 4
gpt4 key购买 nike

作为从 Visual Studio 2010 升级到 2013 的努力的一部分,我正在研究几个需要 EXTERNAL 访问的 SQL Server CLR 存储过程,为此目的,它们被隔离在一个单独组装。我几乎可以轻松构建所有内容,但这给我带来了一些麻烦。

由于有问题的程序集使用了新的 .sqlproj 项目类型显然根本不喜欢的 Web 引用,并且为了能够继续,我们决定使用 VS2010 SP1 单独构建该程序集并引用编译后的DLL。程序集本身构建得很好,VS2013 对引用本身没有任何提示。

这是 SQL CLR SP 的外观(请不要问我最后的分号到底在做什么):

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.IO;
using System.Text;


public partial class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static int SQLCLR1(
SqlString in1,
SqlString in2,
SqlString in3,
SqlString in4,
SqlString in5
)
{
// ... code elided ... //
}
};

以及 SQL 端:

CREATE PROCEDURE [dbo].[SQLCLR1]
@in1 [nvarchar](4000),
@in2 [nvarchar](4000),
@in3 [nvarchar](4000),
@in4 [nvarchar](4000),
@in5 [nvarchar](4000)
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [External].[StoredProcedures].[SQLCLR1]
GO

An answer by AaronLS给出 AS EXTERNAL NAME 说明符的格式为:

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

数据库项目将程序集引用为External.dll,并且在应用程序下的VS2010项目属性中,“程序集名称”为“External”。在 VS2013 端,解决方案资源管理器将引用显示为简单的“外部”,这反射(reflect)在 SqlServer -> 程序集名称下的“属性”窗口中。

然而,当我尝试在 VS2013 端构建数据库项目时,它会抛出如下错误(每个 CLR SP 一个):

12>D:\Source\...\SQLCLR1.proc.sql(9,16): Error:  SQL71501: Procedure: [dbo].[SQLCLR1] has an unresolved reference to Assembly [External].

要成功构建还缺少什么?

最佳答案

在 VS 2013 方面,我必须将 DLL 引用上的 Model Aware 属性设置为 True

完成后,构建成功完成。

关于sql-server - 如何解决VS2013错误SQL71501 : Procedure X has an unresolved reference to Assembly Y?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22963042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com