Erstellen erweiterter gespeicherter Prozeduren
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Erstellen erweiterter gespeicherter Prozeduren

 
System_CAPS_importantWichtig

Dieses Feature wird in einer künftigen Version von Microsoft SQL Server entfernt. Verwenden Sie dieses Feature nicht in einer neuen Entwicklungsarbeit, und ändern Sie Anwendungen, die dieses Feature verwenden, so schnell wie möglich. Verwenden Sie stattdessen die CLR-Integration.

Eine erweiterte gespeicherte Prozedur ist eine Funktion mit einem Prototyp:

SRVRETCODE xp_extendedProcName (SRVPROC *);

Die Verwendung des Präfix xp_ ist optional.Bei den Namen erweiterter gespeicherter Prozeduren wird die Groß-/Kleinschreibung beachtet, wenn in Transact-SQL-Anweisungen auf sie verwiesen wird, und zwar unabhängig von der auf dem Server installierten Codepage/Sortierreihenfolge.Wenn Sie eine DLL erstellen:

  • Wenn ein Einstiegspunkt erforderlich ist, schreiben Sie eine DllMain-Funktion.

    Diese Funktion ist optional; wenn Sie sie nicht im Quellcode angeben, erstellt der Compiler einen Link zu seiner eigenen Version, die keine Aktionen ausführt, außer TRUE zurückzugeben.Wenn Sie eine DllMain-Funktion bereitstellen, ruft das Betriebssystem diese Funktion auf, sobald ein Thread oder ein Prozess mit der DLL verbunden oder von ihr getrennt wird.

  • Alle von außerhalb der DLL aufgerufenen Funktionen (alle e-Funktionen einer erweiterten gespeicherten Prozedur) müssen exportiert werden.

    Sie können eine Funktion exportieren, indem Sie ihren Namen im Abschnitt EXPORTS einer DEF-Datei auflisten, oder Sie können dem Funktionsnamen im Quellcode das Präfix __declspec(dllexport), eine Microsoft-Compilererweiterung, hinzufügen (beachten Sie, dass __declspec() mit zwei Unterstrichen beginnt).

Diese Dateien sind zum Erstellen einer DLL einer erweiterten gespeicherten Prozedur erforderlich.

Datei

Beschreibung

Srv.h

API-Headerdatei für erweiterte gespeicherte Prozeduren

Opends60.lib

Importbibliothek für Opends60.dll

Um eine DLL für eine erweiterte gespeicherte Prozedur zu erstellen, erstellen Sie ein Projekt des Typs Dynamic Link Library.Weitere Informationen über das Erstellen einer DLL finden Sie in der Dokumentation zur Entwicklungsumgebung.

Es wird empfohlen, dass alle DLLs für erweiterte gespeicherte Prozeduren die folgende Funktion implementieren und exportieren:

__declspec(dllexport) ULONG __GetXpVersion()
{
   return ODS_VERSION;
}
System_CAPS_noteHinweis

__declspec (dllexport) ist eine Microsoft-spezifische Compilererweiterung.Wenn Ihr Compiler diese Direktive nicht unterstützt, sollten Sie diese Funktion in Ihre DEF-Datei im Abschnitt EXPORTS exportieren.

Wenn SQL Server mit dem Ablaufverfolgungsflag -T260 gestartet wird oder wenn ein Benutzer mit Systemadministratorprivilegien DBCC TRACEON (260) durchführt und wenn die DLL für erweiterte gespeicherte Prozeduren __GetXpVersion() nicht unterstützt, wird eine Warnmeldung (Fehler 8131: Die DLL der erweiterten gespeicherten Prozedur '%s' exportiert __GetXpVersion() nicht) im Fehlerprotokoll ausgegeben.(Beachten Sie, dass __GetXpVersion () mit zwei Unterstrichen beginnt.)

Wenn die DLL für die erweiterte gespeicherte Prozedur __GetXpVersion() exportiert, die von der Funktion zurückgegebene Version jedoch niedriger ist als die vom Server benötigte Version, wird eine Warnmeldung ausgegeben. Diese gibt die von der Funktion zurückgegebene Version und die vom Server benötigte Version im Fehlerprotokoll an.Wenn Sie diese Meldung erhalten, geben Sie einen falschen Wert von __GetXpVersion() zurück, oder Sie verwenden eine ältere Version von srv.h für die Kompilierung.

System_CAPS_noteHinweis

SetErrorMode, eine Microsoft Win32 Funktion, sollte in erweiterten gespeicherten Prozeduren nicht aufgerufen werden.

Es wird empfohlen, dass eine erweiterte gespeicherte Prozedur mit langer Ausführungszeit in regelmäßigen Abständen srv_got_attention aufruft, damit die Prozedur sich selbst beenden kann, falls die Verbindung unterbrochen oder der Batch abgebrochen wird.

Wenn Sie eine DLL für eine erweiterte gespeicherte Prozedur debuggen möchten, kopieren Sie sie in das Verzeichnis SQL Server\Binn.Wenn Sie die ausführbare Datei für die Debugsitzung angeben möchten, geben Sie den Pfad und den Namen der ausführbaren Microsoft SQL Server-Datei an (beispielsweise C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Binn\Sqlservr.exe).Weitere Informationen zu sqlservr-Argumenten finden Sie unter sqlservr (Anwendung).

Anzeigen:
© 2016 Microsoft