Debugowanie CLR obiektów bazy danych
SQL Server zapewnia obsługę debugowania Transact-SQL i plików wykonywalnych języka wspólnego (CLR) obiektów w bazie danych. Kluczowych aspektów debugowania w SQL Server to ułatwienia instalacji i użytkowania i integracja debugera programu SQL Server z programu Microsoft Visual Studio debugger. Ponadto debugowanie działa w różnych językach.Użytkownicy mogą bezproblemowo wkraczać do środowiska CLR obiektów z Transact-SQLi na odwrót. Debuger programu SQL Server 2008 w języku Transact-SQL w programie SQL Server Management Studio nie może być używany do debugowania obiektów zarządzanych bazy danych, ale obiekty można debugować za pomocą debugery w programie Visual Studio 2005 Professional Edition oraz programu Visual Studio 2005 Team Edition pakiet.Zarządzane obiekty debugowania w Visual Studio obsługuje wszystkie typowe funkcje debugowania, takie jak "" krok do"i instrukcje"krok za pośrednictwem"procedur wykonywanych na serwerze.Debuggers zestaw na użycie punktów przerwania, sprawdź stos wywołań, Sprawdź zmienne i modyfikować wartości zmiennych podczas debugowania.Note that Visual Studio .NET 2003 cannot be used for CLR integration programming or debugging.SQL Server includes the .NET Framework pre-installed, and Visual Studio .NET 2003 cannot use the .NET Framework 2.0 assemblies.
Aby uzyskać więcej informacji na temat debugowania kod zarządzany przy użyciu programu Visual Studio, zobacz temat "Debugowanie kod zarządzany "tematu w dokumentacji programu Visual Studio.
Uprawnienia i ograniczenia dotyczące debugowania
Debugowanie jest bardzo uprzywilejowana operacja, a zatem tylko członkowie sysadmin mogą to zrobić w ustalić roli serweraSQL Server.
Podczas debugowania, obowiązują następujące ograniczenia:
Debugowanie CLR procedur jest ograniczone do jednego wystąpienie debugera w danej chwili.Ograniczenie to stosuje się, ponieważ wykonanie wszystkich kodu CLR zablokowuje po wybraniu punktu przerwania i wykonanie nie będzie kontynuowana, dopóki nie przemieszcza się z punktu przerwania debugera.Można jednak kontynuować debugowania Transact-SQL w innych połączeń. Mimo że Transact-SQL debugowanie nie zablokowania wykonań innych na serwerze, może spowodować, że czekać przez przytrzymanie blokada dla innych połączeń.
Istniejące połączenia nie może być debugged, tylko nowe połączenia, jak SQL Server wymaga informacji o środowisku klient i debuger może nawiązać połączenia.
Ze względu na powyższe ograniczenia zaleca się, że Transact-SQL i kod CLR być debugowania na serwerze test, a nie na serwerze produkcyjnym.
Przegląd informacji o debugowaniu zarządzane obiekty bazy danych
Debugowanie w SQL Server następujący model danego połączenia. Debuger, można wykrywać i debugowania działania tylko dla połączenia klient, do której jest podłączony.Funkcje debugera nie jest ograniczony przez typ połączenia, dlatego może być debugowane połączeń HTTP i strumień danych tabelarycznych (TDS).Jednak SQL Server nie zezwala na debugowanie istniejące połączenia. Debugowanie obsługuje wszystkie typowe funkcje debugowania w ramach procedur wykonywanych na serwerze.Interakcja między debugera i SQL Server odbywa się za pośrednictwem rozproszonych Component Object Model (COM).
Aby uzyskać więcej informacji i scenariusze dotyczące debugowania zarządzanych procedur przechowywanych, funkcji, wyzwalaczy, typów zdefiniowanych przez użytkownika i zagregowanych zobacz "Debugowanie serwera CLR integracja z bazy danych SQL "tematu w dokumentacji programu Visual Studio.
Uwaga
Protokół sieciowy TCP/IP musi być włączona SQL Server wystąpienie w celu zdalnego rozwoju, debugowanie i rozwoju za pomocą programu Visual Studio. Aby uzyskać więcej informacji na temat włączania protokół TCP/IP na serwerze zobacz Configuring Client Network Protocols.
Aby debugować zarządzane obiekty
Otwórz program Microsoft Visual Studio 2005, Utwórz nowy SQL Server Projekt i ustanowić połączenie z bazą danych na wystąpienie SQL Server.
Tworzenie nowego typu.W eksplorator rozwiązań, kliknij prawym przyciskiem projektu, a następnie wybierz Dodawanie and Nowe Item… Z Dodaj nowy element Wybierz opcję oknaProcedura przechowywana, Funkcja zdefiniowana przez użytkownika, Typ zdefiniowany przez użytkownika, Wyzwalacz, agregacja, lub Klasa.Określ nazwę urządzenie źródłowe pliku z nowym typem i kliknij Dodawanie.
Dodaj kod dla nowego typu do edytora tekstów.Przykładowy kod, na przykład przechowywane procedury zobacz sekcję w dalszej części tego tematu.
Dodać skrypt, który sprawdza typ.W eksplorator rozwiązań, rozwiń TestScripts katalogu, kliknij dwukrotnie ikonęTest.SQL , aby otworzyć domyślny skrypt testu urządzenie źródłowe pliku.Dodawanie skryptu testu, który wywołuje kod, który ma być debugowane do edytora tekstów.Poniżej znajduje się przykładowy skrypt.
Umieścić jeden lub więcej punktów przerwania w kodzie źródłowym.Kliknij prawym przyciskiem myszy, w wierszu kodu w edytorze tekstu, w funkcja lub procedury, który chcesz debugować, i wybierz polecenie Punkt przerwania and Wstaw punkt przerwania.Punkt przerwania jest dodawany Podświetlanie wiersza kodu w kolorze czerwonym.
W Program Debug Wybierz opcję menuRozpocząć debugowanie , aby skompilować, wdrożyć i przetestować projekt.Będzie można uruchomić skryptu testu w Test.sql i będzie można wywołać obiektu zarządzanego bazy danych.
Gdy pojawi się żółta strzałka wyznaczające wskaźnik do instrukcji na wykonanie kodu punkt przerwania wstrzymuje i można rozpocząć debugowanie obiektu zarządzanego bazy danych.Możesz Krok ponad from the Program Debug menu, aby przejść do następnego wiersza kodu wskaźnik do instrukcji.The Locals window is used to observe the state of the objects currently highlighted by the instruction pointer.Zmienne mogą być dodawane do Oglądanie okna.Stan obserwowane zmiennych można zaobserwować w całej sesja debugowania nie tylko wtedy, gdy zmienna jest wyświetlana w wierszu kodu aktualnie zaznaczone wskaźnik instrukcji.Kontynuuj wybierz z menu debugowanie, aby przejść wskaźnik do instrukcji do następnego punktu punkt przerwania lub zakończenie wykonywania rutynowych, jeśli nie ma żadnych więcej punktów punkt przerwania.
Przykład
W poniższym przykładzie są zwracane SQL Server Wersja do obiektu wywołującego.
C#
using System;
using System.Data;
using System.Data.SqlTypes;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
public class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void GetVersion()
{
using(SqlConnection connection = new SqlConnection("context connection=true"))
{
connection.Open();
SqlCommand command = new SqlCommand("select @@version",
connection);
SqlContext.Pipe.ExecuteAndSend(command);
}
}
}
Visual Basic
Imports System
Imports System.Data
Imports System.Data.Sql
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server
Imports System.Data.SqlClient
Partial Public Class StoredProcedures
<Microsoft.SqlServer.Server.SqlProcedure> _
Public Shared Sub GetVersion()
Using connection As New SqlConnection("context connection=true")
connection.Open()
Dim command As New SqlCommand("SELECT @@VERSION", connection)
SqlContext.Pipe.ExecuteAndSend(command)
End Using
End Sub
End Class
Poniżej przedstawiono skrypt testu, który wywołuje GetVersion, procedura przechowywana zdefiniowanej powyżej.
EXEC GetVersion