Отладка SQL CLR функции при помощи Visual Studio

Когда-то давно я столкнулся с этой проблемой, точнее не проблемой, а была необходимость в этой возможности. Пришлось мне тогда потратить некоторое время, чтобы узнать с какого конца нужно начать, чтобы отладить SQL CLR код. И вот теперь, меня часто спрашивают об этом, так как в сети найти информацию по этому поводу, где на пальцах всё показано не так то и просто, особенно на русском. Надеюсь, что данная статья окажется полезной начинающим разработчикам, а также всем тем, кто столкнётся с этим. Для демонстрации, создадим простой проект SQL Server. Сразу отмечу, что Visual Studio должна быть запущена от имени пользователя с правами администратора. А пользователь, от имени которого происходит подключение к SQL Server должен иметь роль – sysadmin.



Добавим функцию SQL CLR,



которая содержит простой код.
public partial class UserDefinedFunctions
{
    [Microsoft.SqlServer.Server.SqlFunction]
    public static bool SqlFunction(SqlString inputString)
    {
      string s = inputString.Value.ToUpper();
 
      return true;
    }
}
После,



развёртываем сборку на SQL Server.
 


Смотрим в Management Studio, прошёл ли процесс развёртывания удачно. Также включаем выполнение кода пользовательских сборок CLR в SQL Server.
USE TestClr;
EXEC sp_configure 'clr enabled', 1
GO
 RECONFIGURE
GO
EXEC sp_configure 'clr enabled'
GO
Для этого выполняем вышеприведённый код T-SQL.



Идём обратно в Visual Studio, разрешаем отладку кода SQL CLR в обозревателе объектов SQL Server.



Выбираем отладку функции в контекcтном меню.



Вводим тестовые данные.



Заходим в код (клавиша F11).



Подключаем отладчик к процессу.



И мы уже отлаживаем код .NET.



На этом всё.