| Termin | Definicja |
|---|---|
| Procedura użytkownika | Procedura użytkownika to obiekt utworzony przez administratora lub programistę, w odróżnieniu od procedur systemowych. Procedura użytkownika jako obiekt bazy danychProcedura użytkownika to programowalny obiekt bazy danych utworzony przez administratora, programistę albo innego uprawnionego użytkownika środowiska bazodanowego. Zawiera zapisany zestaw instrukcji wykonywanych przez silnik bazy danych po jej wywołaniu. W zależności od konkretnego systemu zarządzania bazą procedura może przyjmować parametry wejściowe, zwracać wartości lub zestawy wyników, wykonywać operacje modyfikujące dane oraz sterować przebiegiem wykonania za pomocą warunków i pętli. Określenie „użytkownika” wskazuje na pochodzenie obiektu, a nie na osobę korzystającą z aplikacji. Procedura nie jest zwykłym plikiem programu uruchamianym bezpośrednio w systemie operacyjnym. Jest przechowywana w katalogu obiektów bazy danych i wykonywana przez jej silnik. Jej definicja może obejmować między innymi instrukcje zapytań, deklaracje zmiennych, obsługę wyjątków oraz polecenia związane z transakcjami, o ile dany silnik obsługuje takie elementy w procedurach. Różnica między procedurą użytkownika a procedurą systemowąProcedura systemowa jest dostarczana przez producenta systemu zarządzania bazą danych albo tworzona jako element jego środowiska administracyjnego. Służy zwykle do wykonywania operacji związanych z konfiguracją, metadanymi, monitorowaniem, zarządzaniem uprawnieniami lub innymi funkcjami silnika. Jej definicja, dostępność i sposób wywołania zależą od używanego produktu oraz jego wersji. Procedura użytkownika powstaje natomiast na potrzeby konkretnej aplikacji, organizacji lub procesu przetwarzania danych. Oba rodzaje procedur mogą być wywoływane w podobny sposób, ale nie mają tego samego zakresu odpowiedzialności. Procedura systemowa może korzystać z uprzywilejowanych mechanizmów wewnętrznych, natomiast procedura użytkownika działa zgodnie z regułami danego schematu, bazy i konta wykonującego. W praktyce ważne jest rozróżnienie nazewnictwa, schematu oraz właściciela obiektu, ponieważ pomylenie procedury użytkownika z procedurą systemową może prowadzić do błędnej diagnozy problemu albo nieprawidłowej oceny wymaganych uprawnień. Parametry, transakcje i uprawnienia proceduryProcedura użytkownika może zastępować wielokrotnie powtarzany zestaw instrukcji wykonywanych przez aplikację. Parametry pozwalają przekazywać do niej wartości, na przykład identyfikator rekordu, zakres dat albo wariant operacji. Dzięki temu jedna definicja może obsługiwać wiele wywołań bez kopiowania całego zapytania po stronie programu klienckiego. W zależności od silnika procedura może również przekazywać wartości wyjściowe lub zwracać wynik zapytania przeznaczony do dalszego odczytu przez aplikację. Jeżeli procedura wykonuje kilka powiązanych operacji, może korzystać z transakcji. Transakcja grupuje zmiany tak, aby zostały zatwierdzone albo wycofane zgodnie z regułami konkretnego systemu bazodanowego. Nie każda procedura automatycznie zapewnia pełną atomowość, ponieważ znaczenie mają ustawienia sesji, sposób rozpoczęcia transakcji, obsługa błędów oraz polecenia zatwierdzające lub wycofujące. Dostęp do procedury jest kontrolowany przez uprawnienia. Możliwe jest oddzielenie prawa do wykonania procedury od bezpośredniego prawa do odczytu lub modyfikacji tabel, ale szczegółowy model zależy od produktu i konfiguracji bezpieczeństwa. Diagnostyka procedury użytkownika w działającej bazieAnalizę problemu z procedurą należy rozpocząć od ustalenia jej pełnej nazwy, schematu, parametrów oraz środowiska, w którym jest wywoływana. Trzeba sprawdzić, czy aplikacja kieruje żądanie do właściwej bazy, czy przekazuje parametry w odpowiednich typach oraz czy użytkownik wykonujący procedurę posiada wymagane uprawnienia. Błąd może wynikać zarówno z samej definicji, jak i z niezgodności między procedurą a strukturą tabel, typami kolumn lub aktualną wersją silnika. Podczas diagnostyki warto porównać oczekiwany przepływ danych z rzeczywistym wykonaniem: wartości wejściowe, odczytane rekordy, wykonane modyfikacje, wynik końcowy i ewentualne wycofanie transakcji. Należy także uwzględnić blokady, czas wykonywania, plan zapytania oraz komunikaty błędów rejestrowane przez silnik. Sama obecność procedury w katalogu obiektów nie potwierdza jej poprawności. Trzeba zweryfikować, czy procedura jest wywoływana w odpowiednim kontekście, nie opiera się na nieistniejących obiektach i zwraca dane zgodne z kontraktem aplikacji. |