Udostępnij za pośrednictwem


Tworzenie dodatkowych przechowywanych procedur

Important noteImportant Note:

This feature will be removed in a future version of Microsoft SQL Server. Do not use this feature in new development work, and modify applications that currently use this feature as soon as possible. Zamiast tego użyj integracja środowiska CLR.

rozszerzona procedura składowana Jest funkcją z prototyp:

SRVRETCODE xp_extendedProcName **(**SRVPROC *);

Przy użyciu prefiksu xp_ jest opcjonalne.rozszerzona procedura składowana nazwach jest uwzględniana wielkość liter podczas w Transact-SQL instrukcje, niezależnie od kolejności sortowania/strona kod zainstalowany na serwerze. Podczas tworzenia biblioteki DLL:

  • Jeżeli konieczne jest punkt wejścia, napisz DllMain funkcja.

    Ta funkcja jest opcjonalny; jeżeli nie zostanie określona w urządzenie źródłowe kodu, kompilator łączy własną wersja, które nie działają, ale zwracana wartość TRUE.Jeśli podasz DllMain Funkcja systemu operacyjnego wywołuje tę funkcję przy wątek lub procesów dołącza go lub odłączenie od biblioteki DLL.

  • Wszystkie funkcje wywoływane z zewnątrz biblioteki DLL (wszystkie rozszerzona procedura składowana Efunctions) muszą być eksportowane.

    Można wyeksportować funkcja, wpisując jego nazwę w sekcji EXPORTS w pliku .def lub może prefiksu nazwy funkcja w kodzie źródłowym z __declspec(dllexport) rozszerzenie kompilator Microsoft (Uwaga tego __declspec() zaczyna się od dwóch znaków podkreślenia).

Pliki te są wymagane w przypadku tworzenia rozszerzona procedura składowana biblioteki DLL.

Oznacza to, można użyć tego narzędzie jako klient kontrola urządzenie źródłowe od swojego dostawca.

Description

Srv.h

Plik rozszerzonych nagłówka API procedura przechowywana

Opends60.lib

Import biblioteki Opends60.dll

rozszerzona procedura składowana biblioteki DLL, utworzyć w projekcie typu biblioteki łączy dynamicznych.Aby uzyskać więcej informacji na temat tworzenia biblioteki DLL zobacz dokumentację rozwoju środowiska.

Zdecydowanie zaleca się, że wszystkie rozszerzona procedura składowana, biblioteki DLL wdrożenia i eksportować następującą funkcja:

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

Uwaga

__declspec(dllexport) to rozszerzenie kompilator specyficzne dla firmy Microsoft.Jeśli Twój kompilator nie obsługuje tej dyrektywie, powinno się eksportować tej funkcja w pliku DEF EXPORTS w sekcji.

Kiedy SQL Server zostanie uruchomiony przy użyciu flagi śledzenia - T260 lub jeśli użytkownik z uprawnieniami administrator systemu uruchamia TRACEON DBCC (260), i jeśli rozszerzona procedura składowana DLL nie obsługuje __GetXpVersion() komunikat z ostrzeżeniem (8131 błędów: rozszerzona procedura składowana DLL '%' nie eksportuje __GetXpVersion().) zostanie wydrukowany do dziennik błędów. (Należy zwrócić uwagę, tym __GetXpVersion() zaczyna się od dwóch znaków podkreślenia).

Jeśli rozszerzona procedura składowana DLL eksportuje __GetXpVersion() wersja zwrócony przez funkcja jest mniejszy niż wymagany przez serwer, drukowany jest wyświetlany komunikat ostrzegawczy informujący wersja zwrócony przez funkcja i wersja, oczekiwana przez serwer do dziennik błędów.Jeśli ten komunikat jest zwrócenie błędnej wartości z __GetXpVersion() lub są być kompilowanie ze starszej wersja srv.h.

Uwaga

SetErrorMode, Microsoft funkcja Win32, nie powinien zostać wywołany w rozszerzonych procedur przechowywanych.

Zaleca się, że długim, rozszerzona procedura składowana powinna wywołać srv_got_attention okresowo, tak aby procedura może zakończyć się, jeśli połączenie jest zabicia lub partia jest przerywana.

Aby debugować rozszerzona procedura składowana biblioteki DLL, skopiować go do SQL Server\Binn katalogu. To specify the executable for the debugging session, enter the path and file name of the Microsoft SQL Server executable file (for example, C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\Sqlservr.exe).Aby uzyskać informacje dotyczące Sqlservr argumentów, zobacz temat sqlservr Application.