zastosowałem SQL Server Data Tools patch do Visual Studio 2012 (Premium) i stworzył SQL Server CLR projektu funkcji zdefiniowanej przez użytkownika w języku C#:SSDT SQL Server debugowanie nie Hit CLR Breakpoints
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 obiekcie SQL Server Okienko Eksploratora, klikam prawym przyciskiem myszy na nowo opublikowanym UDF i wybieram "Execute Function ...". Zostałem poproszony o podanie przykładowej wartości wejściowej, a Visual Studio następnie opublikuje funkcję (ponownie) do mojego lokalnego SQL Server 2012 i wygeneruje skrypt, który wygląda następująco:
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 wstawię punkt przerwania do pliku wykonywalnego w moim CLR kod C++ UDF, kliknij prawym przyciskiem myszy funkcję UDF w Eksploratorze obiektów programu SQL Server, a tym razem wybierz " Funkcja debugowania ... ", ląduję w debugerze dla wygenerowanego skryptu testowego SQL. Potrafię przejść przez instrukcje SQL na końcu skryptu, który zwraca poprawny wynik, ale punkt przerwania w moim kodzie C# nigdy nie został osiągnięty w debugerze C#.
Terminologia dla tej funkcji wydaje się myląca. Dla każdego programisty "debugowanie" funkcji oznacza przechodzenie przez linie wykonywalne w kodzie samej funkcji. Po prostu wygenerowanie wiązki testowej SQL, która wywołuje moją skompilowaną funkcję i zwraca wynik, to "testowanie" tej funkcji. Co najwyżej jedyną rzeczą "debugowania" jest sam test generowany przez narzędzie, ponieważ nie można "wkroczyć" w kod CLR. Jedyną opcją jest "Step Over" to.
Więc jak mogę Visual Studio faktycznie debugowania i uderzyć przerwania w moim UDF kod C#?
Czy próbowałeś/aś przejść przez kroki [tego dokumentu MSDN] (http://technet.microsoft.com/en-us/library/ms131096.aspx), aby sprawdzić, czy pominąłeś krok? –
@Scott - Próbowałem, ale po powiedzeniu ci, jak utworzyć funkcję SQL CLR lub sproc - co oczywiście już zrobiłem - cały artykuł daje ci debugowanie Visual Studio 101. Wiesz: "kliknij prawym przyciskiem myszy linię i wybierz "" przełącz punkt przerwania "", itd. Następnie, mówi "Dodaj skrypt, który testuje typ.": "W eksploratorze rozwiązań rozwiń katalog TestScripts i kliknij dwukrotnie Test.sql" Nie widzę "TestScripts" katalogu w Eksploratorze rozwiązań w 2012 lub 2010 roku, więc nie mam pojęcia, o czym mówią. – Buggieboy