Udostępnij za pośrednictwem


Debugowanie CLR obiektów bazy danych

SQL Serverzapewnia obsługę debugowania Transact-SQL i wspólnych language runtime (CLR) obiektów w bazie danych.klucz Aspektów debugowania w SQL Server są łatwości instalacji i użytkowania oraz integracja debuger programu SQL Server z programu Microsoft Visual Studio debugger.Ponadto debugowanie działa w różnych językach.Użytkowników można bezproblemowo Wkrocz CLR obiektów z Transact-SQLi odwrotnie. Debuger programu SQL Server Transact-SQL w programie SQL Server Management Studio nie można używać do debugowania zarządzane obiekty, ale obiekty można debugować za pomocą debugery w Visual Studio.Zarządzane debugowania w Visual Studio obsługuje wszystkie typowe funkcje debugowania, takie jak "kroku do" obiektu bazy danych i "over" instrukcje procedur wykonywanych na serwerze.Debugery zestaw punkty przerwania, sprawdzać stos wywołań, sprawdzać zmiennych i zmodyfikować 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 "Debugowania kod zarządzany" temat w dokumentacji programu Visual Studio.

Ograniczenia i uprawnień debugowania

Debugowanie jest wysoko uprzywilejowane operacji i dlatego tylko członkowie sysadmin stała rola serwera są dozwolone, więc w tym SQL Server.

Podczas debugowania, obowiązują następujące ograniczenia:

  • Debugowanie procedur CLR jest ograniczone do jednego wystąpienie debugera w czas.To ograniczenie dotyczy, ponieważ wszystkie wykonanie kodu CLR zawiesza wykonanie kontynuowana od punktu podziału przejście debugera, gdy trafień punkt przerwania.Jednakże nadal debugowania Transact-SQL w innych połączeń.Chociaż Transact-SQL debugowania nie Zablokuj inne wykonania na serwerze, może spowodować, że inne połączenia oczekiwania przez gospodarstwo blokada.

  • Istniejące połączenia nie może być debugowanej tylko nowych połączeń, jako 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 debugowanego serwera testowego, a nie na serwerze produkcji.

Omówienie debugowania zarządzane obiekty bazy danych

Debugowanie w SQL Server następuje modelu poszczególnych połączeń.Debuger, można wykrywać i debugowania działalności tylko połączenia klient, do której jest podłączony.Ponieważ funkcje debugera nie jest ograniczone przez typ połączenia obu strumień danych tabelarycznych (TDS) i połączeń HTTP może być debugowane.Jednakże SQL Server nie umożliwia debugowanie istniejącego połączenia.Debugowanie obsługuje wszystkie typowe funkcje debugowania w ramach procedur wykonywanych na serwerze.Interakcja między debugera i SQL Server dzieje się za pośrednictwem protokołu COM (distributed Component Object Model).

Aby uzyskać więcej informacji i scenariusze dotyczące debugowania zarządzanych procedur przechowywanych, funkcji, wyzwalaczy, typów zdefiniowanych przez użytkownika i agregatów, zobacz "Debugowanie SQL Server CLR integrację bazy danych" temat w dokumentacji programu Visual Studio.

Włączony protokół SQL Server wystąpienie do programu Visual Studio za pomocą zdalnego rozwoju, debugowanie i rozwoju.Aby uzyskać więcej informacji na temat włączania protokół TCP/IP na serwerze, zobacz Konfigurowanie protokołów sieciowych klienta.

Aby debugować zarządzane obiekty

  1. Otwórz program Microsoft Visual Studio, Utwórz nowy SQL Server projektu i ustanowić połączenie z bazą danych na wystąpienie SQL Server.

  2. Tworzenie nowego typu.W Solution Explorer, kliknij prawym przyciskiem myszy projekt, wybierz Dodaj i Item… nowy z Dodaj nowy element wybierz Procedura przechowywana, User-defined funkcji, Typu zdefiniowanego przez użytkownika, wyzwalacz, agregacji, lub klasy.Określ nazwę dla źródło pliku nowego typu a, kliknij Dodaj.

  3. Dodaj kod nowego typu do edytora tekstu.Przykładowy kod dla przykładową procedura składowana zobacz sekcję w dalszej części tego tematu.

  4. Dodać skrypt, który badania typu.W Solution Explorer, rozwiń TestScripts kliknij dwukrotnie katalog Test.sql otworzyć domyślny skrypt testu źródło pliku.Dodać skrypt testowy, który wywołuje kod debugowanego do edytora tekstu.Poniżej znajduje się przykładowy skrypt.

  5. Umieścić jeden lub więcej punktów przerwania w źródło kodu.Kliknij prawym przyciskiem myszy wiersz kodu w edytorze tekstu wewnątrz funkcja lub procedury, które chcesz debugować, i wybierz przerwania i Wstaw punkt przerwania.Dodaje się punkt przerwania Podświetlanie wiersza kodu w kolorze czerwonym.

  6. W debugowania menu wybierz Uruchomić debugowanie Aby skompilować, wdrożyć i przetestować projekt.Uruchomi skrypt testowy w Test.sql i zostanie wywołany obiekt bazy danych zarządzanej.

  7. 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 Kroku nad z debugowania menu, aby przejść do następnego wiersza kodu wskaźnik do instrukcji.Zmiennych lokalnych obserwować stan obiektów aktualnie wyróżnione przez wskaźnik instrukcji jest używane.Zmienne mogą być dodawane do Watch okna.Państwo obserwowanych zmiennych można zaobserwować całej całej sesja debugowania nie tylko wtedy, gdy zmienna jest w wierszu kodu, aktualnie wyróżnione przez wskaźnik instrukcji.Kontynuuj wybierz z menu debugowanie, aby przejść wskaźnik do instrukcji następny punkt przerwania lub zakończenie wykonywania rutynowych, jeśli nie więcej punktów przerwania.

Przykład

Poniższy przykład zwraca SQL Server wersja 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

Oto skryptu testu, który wywołuje GetVersion procedura składowana, określonych powyżej.

EXEC GetVersion