Debugowanie serwera SSDT SQL Server nie uderza w punkty przerwania CLR

ZastosowałemPoprawka do narzędzi danych SQL Server do Visual Studio 2012 (Premium) i utworzył zdefiniowany przez użytkownika program SQL Server CLR w C #:

public partial class UserDefinedFunctions
{
    [Microsoft.SqlServer.Server.SqlFunction]
    public static SqlInt32 Add42(SqlInt32 in_param)
    {
        SqlInt32 retval = in_param + 42;  // Set break point here.
        return retval;
    }
}

W okienku Eksplorator obiektów SQL Server klikam prawym przyciskiem myszy nowo opublikowany UDF i wybieram „Wykonaj funkcję ...” Zostałem poproszony o podanie przykładowej wartości wejściowej, a Visual Studio opublikuje funkcję (ponownie) na moim lokalnym 2012 SQL Server i generuje skrypt, który wygląda tak:

DECLARE    @return_value Int

EXEC    @return_value = [dbo].[Add42] @in_param = 5

SELECT    @return_value as 'Return Value'

GO

... i wykonuje go, zwracając oczekiwany wynik 47.

Jeśli teraz umieszczę punkt przerwania na linii wykonywalnej w moim kodzie CLR UDF C #, kliknij prawym przyciskiem myszy funkcję UDF w Eksploratorze obiektów SQL Server, a tym razem wybierz opcję „Funkcja debugowania ...”, ląduję w debuggerze dla wygenerowanego Skrypt testowy SQL. Mogę przejść przez instrukcje SQL na koniec skryptu, który zwraca poprawny wynik, ale punkt przerwania w moim kodzie C # nigdy nie został osiągnięty w debuggerze C #.

Terminologia dla tej funkcji wydaje się myląca. Dla każdego programisty „debugowanie” funkcji oznacza przechodzenie przez wykonywalne linie w kodzie samej funkcji. Po prostu wygenerowanie pasma testowego SQL, które wywołuje moją skompilowaną funkcję i wraca wynik, jest po prostu „testowaniem” funkcji. Co najwyżej jedyną rzeczą „debugowaną” jest sam test generowany przez narzędzie, ponieważ nie można „wkroczyć” do kodu CLR. Jedyną opcją jest to, aby to „Step Over”.

Jak więc uzyskać Visual Studio?odpluskwići uderzamy w punkt przerwania w moim kodzie UDF C #?

questionAnswers(4)

yourAnswerToTheQuestion