我一直试图找到这个简单问题的答案——但到目前为止还没有弄清楚。
假设我有 MyDb.sqlproj,其中包含各种 sql 内容(存储过程、视图、触发器等)。
我通过 Add-> New item -> SQL CLR C#, User Defined Function 添加了一个新的 UDF。
例如:
namespace MyNameSpace
{
public class MyClass
{
[SqlFunction(DataAccess = DataAccessKind.Read)]
//I use different attributes here, but it doesn't matter
public static int Method1()
{
return 0;
}
}
}
在 MyDb.sqlproj Properties 中,SQLCLR 选项卡 MyDb 是程序集的名称和默认命名空间
在我的 sql 代码中,我使用EXTERNAL NAME调用 clr 方法:
CREATE PROCEDURE ClrMethod1
RETURNS [int] WITH EXECUTE AS CALLER
AS EXTERNAL NAME [MyDb].[MyNamespace.MyClass].[Method1]
我似乎尝试了一切来编译最后一行。它无法解析引用并获取:
SQL71501:函数:[我的 sql 函数的名称] 对程序集 [MyDb] 有未解析的引用
请指出正确的方法来让它工作。我会错过什么?
我正在使用 VS2010 SP1 和最新版本的 SSDT