Udostępnij za pośrednictwem


Tworzenie rozszerzonych procedur przechowywanych

Ważna informacjaWażne:

Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Nie należy stosować tej funkcji w nowych projektach oraz jak najszybciej należy zmodyfikować aplikacje, w których obecnie jest używana ta funkcja. Użyj integracji CLR.

rozszerzona procedura składowana jest funkcja z prototypu:

SRVRETCODE xp_extendedProcName **(**SRVPROC *);

Przy użyciu prefiksu xp_ jest opcjonalne.Nazwy rozszerzona procedura składowana jest uwzględniana wielkość liter podczas w Transact-SQL oświadczeń, niezależnie od strona kodowa/zainstalowany na serwerze. kolejność sortowania sortowaniaPodczas tworzenia biblioteki DLL:

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

    Ta funkcja jest opcjonalny; Jeśli nie zapewnia on w źródło kodu, kompilator łączy własną wersja, nie działają, ale zwracana wartość TRUE.Jeśli podasz DllMain funkcja systemu operacyjnego wywołuje funkcja, to podczas procesu lub wątek dołącza go lub odłączenie od biblioteki DLL.

  • Można eksportować wszystkie funkcje wywoływane z zewnątrz DLL (wszystkie rozszerzona procedura składowana Efunctions).

    funkcja można wyeksportować, wpisując jego nazwę w sekcji pliku .def wywozu lub można prefiks nazwy funkcja w źródło kodu z __declspec(dllexport), rozszerzenie kompilator Microsoft (należy zauważyć, że __declspec() zaczyna się od podkreślenia dwóch).

Pliki te są wymagane do tworzenia rozszerzona procedura składowana DLL.

Plik

Opis

SRV.h

Plik rozszerzonych nagłówka API procedury przechowywane

Opends60.lib

Import biblioteki Opends60.dll

Aby utworzyć rozszerzona procedura składowana DLL, Utwórz projekt typu Dynamic Link Library.Aby uzyskać więcej informacji na temat tworzenia biblioteki DLL dokumentacji rozwoju środowiska.

Zdecydowanie zaleca się, że wszystkie rozszerzona procedura składowana, bibliotek DLL wdrożenia i eksportowanie następujących funkcja:

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

Ostrzeżenie

__declspec(dllexport) jest rozszerzeniem kompilator specyficzne dla firmy Microsoft.Jeśli Twój kompilator nie obsługuje niniejszej dyrektywy, należy wyeksportować tej funkcja w pliku DEF sekcji wywozu.

Podczas SQL Server pracę z śledzenia Flaga - T260 lub jeśli użytkownik z uprawnieniami administrator systemu uruchamia DBCC TRACEON (260) i rozszerzona procedura składowana DLL nie obsługuje __GetXpVersion(), ostrzeżenie (błąd 8131: Rozszerzona procedura składowana DLL "%" nie Eksportuj __GetXpVersion().) drukowany jest dziennik błędów.(Należy zauważyć, że __GetXpVersion() zaczyna się od podkreślenia dwóch).

Jeśli rozszerzona procedura składowana DLL eksportuje __GetXpVersion(), ale wersji zwrócony przez funkcja jest mniejszy niż wymagany przez serwer, komunikat ostrzegawczy informujący zwróconych przez funkcja i wersja oczekiwana przez serwer jest drukowany dziennik błędów.Jeśli ten komunikat zwracasz niepoprawną wartość z __GetXpVersion() lub kompilacja odbywa się przy użyciu starszych wersja srv.h.

Ostrzeżenie

SetErrorMode, Microsoft nie należy wywoływać funkcja Win32 w rozszerzonych procedur przechowywanych.

Zalecane jest, że długotrwały rozszerzona procedura składowana powinna wywołać srv_got_attention Okresowo, aby procedury można zakończyć sam siebie zabite połączenia lub partia jest przerywana.

Aby debugować rozszerzona procedura składowana 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_50.MSSQLSERVER\MSSQL\Binn\Sqlservr.exe).Aby uzyskać informacje o sqlservr argumenty, zobacz Sqlservr aplikacji.