Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Procedura systemowa

Termin Definicja
Procedura systemowa

Procedura systemowa to wbudowana procedura SQL Server, zwykle z przedrostkiem sp_, dostarczana przez producenta.

Rola procedury systemowej w SQL Server

Procedura systemowa w Microsoft SQL Server jest gotowym modułem Transact-SQL dostarczanym razem z silnikiem bazy danych albo z jego narzędziami. Taki moduł zawiera instrukcje przygotowane przez producenta i służy do wykonywania powtarzalnych czynności administracyjnych, odczytywania informacji o obiektach, sprawdzania stanu serwera lub obsługi funkcji systemowych. Procedura może przyjmować parametry, zwracać zestaw wyników, kod powrotu albo komunikaty diagnostyczne. Jest wywoływana podobnie jak procedura użytkownika, najczęściej za pomocą instrukcji EXEC.

Przedrostek sp_ często występuje w nazwach procedur systemowych, ale sam prefiks nie świadczy jeszcze o tym, że procedura jest elementem systemu. W SQL Server można utworzyć własną procedurę o nazwie zaczynającej się od sp_, jednak jest to niezalecane. Silnik najpierw szuka takiej nazwy w bazie master, a dopiero później w bieżącej bazie. Może to powodować dodatkowe wyszukiwanie obiektu, niejednoznaczność oraz niezamierzone wywołanie procedury z innego kontekstu. Własne procedury powinny mieć nazwy bez zarezerwowanego dla tego zastosowania przedrostka.

Przykłady procedur dostarczanych przez silnik

Do znanych procedur systemowych SQL Server należy sp_help, która pokazuje informacje o obiekcie, na przykład o tabeli lub widoku. sp_helptext służy do odczytania tekstu definicji obiektu programowalnego, jeżeli definicja jest dostępna. sp_who oraz sp_who2 prezentują informacje o sesjach i procesach widocznych dla użytkownika, przy czym sp_who2 jest nieudokumentowanym rozszerzeniem używanym tradycyjnie do szybkiego podglądu aktywności. W nowszych analizach obciążenia częściej wykorzystuje się udokumentowane widoki dynamicznego zarządzania, takie jak sys.dm_exec_sessions i sys.dm_exec_requests.

Procedury systemowe mogą być związane z konkretną bazą albo z administracją instancją. Przykładowo sp_spaceused zwraca informacje o zajętości miejsca przez bazę lub wskazany obiekt, a sp_helpdb pokazuje podstawowe właściwości baz danych. Procedura sp_configure służy do wyświetlania i zmiany wybranych opcji konfiguracyjnych instancji, lecz zmiany wymagają odpowiednich uprawnień, a niektóre z nich wymagają także użycia RECONFIGURE. Wynik działania zależy od wersji SQL Server, kontekstu bazy, uprawnień oraz parametrów przekazanych podczas wywołania.

Uprawnienia, kontekst i bezpieczne wywołanie

Procedura systemowa działa w określonym kontekście bezpieczeństwa. Sam fakt, że została dostarczona przez SQL Server, nie oznacza automatycznego dostępu do wszystkich informacji. Użytkownik może otrzymać ograniczony wynik albo komunikat o braku uprawnień. Widoczność sesji, zapytań, obiektów i ustawień zależy między innymi od członkostwa w rolach serwerowych i bazodanowych oraz od uprawnień nadanych do konkretnych obiektów. Przy diagnostyce należy więc odnotować konto, bazę, instancję i dokładne polecenie, ponieważ te elementy wpływają na interpretację wyniku.

Nie każda procedura o nazwie podobnej do systemowej ma taki sam status i poziom wsparcia. Procedury udokumentowane można sprawdzać w dokumentacji odpowiedniej wersji SQL Server. Procedury nieudokumentowane, procedury oznaczone jako wewnętrzne oraz obiekty znajdujące się w katalogach systemowych mogą zmienić działanie po aktualizacji lub nie być przeznaczone do bezpośredniego użycia przez aplikacje. Przed wykonaniem polecenia na środowisku produkcyjnym warto sprawdzić parametry, bazę docelową, wymagane uprawnienia oraz to, czy procedura wykonuje jedynie odczyt, czy także modyfikuje konfigurację albo dane.

Procedura systemowa a rozpoznawanie problemu z bazą

Podczas analizy problemu z SQL Server procedura systemowa może dostarczyć informacji pomocnych w ustaleniu, czy przyczyną jest konfiguracja, blokada, brak miejsca, błędny kontekst bazy lub niewystarczające uprawnienia. Nie zastępuje jednak pełnej diagnostyki. Wynik sp_who nie opisuje wszystkich szczegółów wykonywanego zapytania, a sam komunikat z sp_spaceused nie wyjaśnia, dlaczego plik bazy rośnie albo dlaczego operacja nie może zostać wykonana. Dane z procedury należy zestawić z komunikatem błędu, dziennikiem SQL Server, metadanymi w widokach katalogowych i informacjami o konkretnej operacji.

W przypadku aplikacji działającej na komputerze użytkownika ważne jest rozróżnienie problemu z programem od problemu z samym silnikiem SQL Server. Błędna nazwa serwera, nieprawidłowy wybór bazy, wygasłe poświadczenia lub brak uprawnień mogą wystąpić jeszcze przed wykonaniem właściwej procedury. Jeżeli procedura zwraca dane, ale aplikacja interpretuje je błędnie, źródłem usterki może być warstwa połączenia, mapowanie wyników albo niezgodność wersji sterownika. Rzetelna diagnoza wymaga zachowania pełnego komunikatu, nazwy procedury, parametrów i czasu wykonania, bez traktowania samego przedrostka sp_ jako dowodu pochodzenia obiektu.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę