Я пытался найти ответ на этот простой вопрос, но до сих пор не мог понять.
Допустим, у меня есть MyDb.sqlproj с различным содержимым sql (sprocs, представления, триггер и т. д.).
Я добавил новый UDF через Add-> New item -> SQL CLR C#, User Defined Function.
Например:
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 вкладка SQLCLR MyDb — это имя сборки и пространство имен по умолчанию.
В моем коде sql я вызываю метод clr, используя ВНЕШНЕЕ ИМЯ:
CREATE PROCEDURE ClrMethod1
RETURNS [int] WITH EXECUTE AS CALLER
AS EXTERNAL NAME [MyDb].[MyNamespace.MyClass].[Method1]
Кажется, я перепробовал все, чтобы скомпилировать последнюю строку. Он не может разрешить ссылку и получить:
SQL71501: функция: [имя моей функции sql] имеет неразрешенную ссылку на сборку [MyDb]
Пожалуйста, укажите мне правильный способ заставить его работать. Что я мог упустить?
Я использую VS2010 SP1 и последнюю версию SSDT.