Exemplarische Vorgehensweise: Debuggen von erweiterten gespeicherten Prozeduren

Aktualisiert: November 2007

Dieses Thema gilt für folgende Anwendungsbereiche:

Edition

Visual Basic

C#

C++

Web Developer

Express

Standard

Pro und Team

Tabellenlegende:

Vorhanden

Nicht vorhanden

Befehl oder Befehle, die standardmäßig ausgeblendet sind.

Vorsicht:

Erweiterte gespeicherte Prozeduren wurden als veraltet definiert. Obwohl sie zur Sicherstellung der Rückwärtskompatibilität in ASP.NET weiterhin unterstützt werden, wird diese Unterstützung in zukünftigen Versionen nicht mehr vorhanden sein.

Erweiterte gespeicherte Prozeduren wurden eingeführt, um Aktionen zu ermöglichen, die in T-SQL nicht möglich sind, z. B. Zugriff auf das Dateisystem, Lesen der Registrierung usw. Da Sie für solche Aufgaben nun SQL CLR-Prozeduren schreiben können, ist es nicht mehr notwendig, erweiterte gespeicherte Prozeduren zu schreiben. Es wird dringend empfohlen, keine erweiterten gespeicherten Prozeduren mehr zu schreiben und vorhandene Prozeduren durch entsprechende (aber sicherere) gespeicherte SQL/CLR-Prozeduren zu ersetzen.

Erweiterte gespeicherte Prozeduren sind statt in SQL in C++ oder anderen Sprachen geschriebene DLLs. Deshalb hat das Debuggen einer erweiterten gespeicherten Prozedur viel Ähnlichkeit mit dem Debuggen von DLLs in dieser Sprache.

Vorsicht:

Erweiterte gespeicherte Prozeduren werden üblicherweise in systemeigenem C++ geschrieben und bieten nicht den Schutz von verwaltetem Code. Sie sollten vorsichtig getestet werden, da SQL Server aufgrund von Fehlern in diesen Prozeduren abstürzen kann. Um einem möglichen Datenverlust und anderen Problemen vorzubeugen, debuggen Sie keine erweiterte gespeicherte Prozedur auf einem Produktionsserver. Weitere Informationen finden Sie unter ASP.NET Books Online.

Je nach den aktiven Einstellungen oder der Version unterscheiden sich die Dialogfelder und Menübefehle auf Ihrem Bildschirm möglicherweise von den in der Hilfe beschriebenen. Klicken Sie im Menü Extras auf Einstellungen importieren und exportieren, um die Einstellungen zu ändern. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

So debuggen Sie eine erweiterte gespeicherte Prozedur

  1. Beginnen Sie mit dem Debugbuild einer erweiterten gespeicherten Prozedur-DLL. Sie benötigen außerdem eine Anwendung, die die zu debuggende erweiterte gespeicherte Prozedur aufruft. Wenn keine Anwendung vorhanden ist, führen Sie eine der folgenden Aktionen aus:

    • Erstellen Sie ein Visual Studio-Datenbankprojekt mit einer Datenverbindung für die Datenbank, in der die erweiterte gespeicherte Prozedur und der Code zum Aufrufen der Prozedur enthalten sind.

    • Erstellen Sie eine SQL-Skriptdatei, die die erweiterte gespeicherte Prozedur aufruft.

      – oder –

    • Verwenden Sie eine Anwendung wie ISQL/W (in SQL Server enthalten) oder ODBC Test (im ODBC SDK enthalten).

  2. Wenn SQL Server derzeit als Dienst ausgeführt wird, beenden Sie den Dienst. Öffnen Sie dazu in der Systemsteuerung den Ordner Dienste, wählen Sie SQL Server aus, und klicken Sie auf Beenden.

  3. Kopieren Sie die Debugversion der DLL in das Verzeichnis, in dem sich sqlservr.exe befindet, oder in ein beliebiges Verzeichnis im Suchpfad.

    – oder –

    Legen Sie wie folgt ein Postbuildereignis fest, um die DLL im C++-Projekt zu kopieren:

    1. Öffnen Sie das Dialogfeld <Projekt>-Eigenschaftenseiten.

    2. Öffnen Sie im Dialogfeld <Projekt>-Eigenschaftenseiten den Ordner Konfigurationseigenschaften.

    3. Öffnen Sie unter Konfigurationseigenschaften den Ordner Buildereignisse.

    4. Wählen Sie Postbuildereignis aus.

    5. Geben Sie im Datenblatt-Steuerelement neben Befehlszeile einen Kopierbefehl ein, wie in folgendem Beispiel:

      Copy c:\MyProjects\MyXProc\debug\MyXProc.dll C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn

  4. Registrieren Sie die erweiterte gespeicherte Prozedur.

  5. Geben Sie SQL Server als aufrufende ausführbare Datei und Arbeitsverzeichnis für die erweiterte gespeicherte Prozedur-DLL an. Ändern Sie die Einstellungen im Dialogfeld <Projekt>-Projekteigenschaften, auf das Sie in der Kategorie Debugging von Konfigurationseigenschaften wie folgt zugreifen können:

    • Wenn SQL Server im Standardverzeichnis installiert wurde, geben Sie im Feld BefehlC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\SQLSERVR.EXE ein.

    • Legen Sie den Eintrag Arbeitsverzeichnis auf C:\Programme\Microsoft SQL Server\MSSQL.1\MSSQL\Binn fest.

    • Legen Sie den Eintrag Befehlsargumente auf -c fest. Die Option -c bedeutet, dass SQL Server von der Befehlszeile und nicht als Dienst gestartet werden soll. Dadurch startet SQL Server schneller. SQL Server wird auf diese Weise nicht als Dienst gestartet, sondern als Konsolenanwendung unter der Kontrolle der Visual Studio-Debugumgebung. So können Haltepunkte richtig abgefangen und verarbeitet werden.

  6. Legen Sie Haltepunkte im Quellcode der erweiterten gespeicherten Prozedur fest.

  7. Beginnen Sie die Debugsitzung mit einem Ausführungsbefehl. Weitere Informationen finden Sie unter Ausführungskontrolle.

    Beim Starten von SQL Server wird ein Konsolenfenster angezeigt. Sobald der Textbildlauf beendet ist, wird die letzte Meldung mit folgendem Inhalt angezeigt:

    Startprozedur "sp_sqlregister" gestartet

    SQL Server wird gestartet und beginnt mit der Verarbeitung von Anforderungen.

  8. Führen Sie die erweiterte gespeicherte Prozedur aus.

    Sobald der Debugger eine Zeile mit einem Haltepunkt erreicht, wird er angehalten.

    Weitere Tipps zum Schreiben von erweiterten gespeicherten Prozeduren finden Sie im Abschnitt SQL Server in der Microsoft Knowledge Base oder im Abschnitt Programming Extended Stored Procedures der SQL Server-Dokumentation in der MSDN Library.

Siehe auch

Konzepte

Debuggen von SQL