| Termin | Definicja |
|---|---|
| Widok sys.parameters | sys.parameters zwraca listę parametrów zdefiniowanych dla procedur i funkcji w bazie. Widok sys.parameters — czym jest i do czego służyWidok Informacje zwracane przez ten widok są szczególnie przydatne podczas pracy z bazą, w której istnieje wiele procedur i funkcji tworzonych w różnych momentach. Parametry stanowią kontrakt pomiędzy obiektem programowalnym a instrukcją, która go uruchamia. Jeżeli kontrakt zostanie odczytany nieprawidłowo, mogą pojawić się błędy konwersji typów, brak wymaganej wartości, niezgodność kolejności argumentów albo nieoczekiwane wyniki. Odczyt danych z Widok może być wykorzystywany zarówno do jednorazowej diagnostyki, jak i do tworzenia narzędzi administracyjnych. Na jego podstawie można przygotować zestawienie parametrów wybranego obiektu, porównać wersję procedury przed i po zmianie, wygenerować dokumentację techniczną albo sprawdzić, czy aplikacja przekazuje argumenty zgodne z aktualną definicją. W praktyce jest to jeden z elementów katalogu systemowego, który ułatwia rozpoznanie budowy bazy na podstawie metadanych. Widok sys.parameters a kontekst techniczny i porównanie z innymi źródłami
Warto odróżnić parametry od kolumn zwracanych przez funkcję tabelaryczną. Parametr jest wartością przekazywaną do obiektu lub zwracaną przez niego jako argument wyjściowy. Kolumna wyniku należy natomiast do zestawu danych generowanego przez funkcję. W przypadku funkcji tabelarycznej sama lista parametrów nie odpowiada więc wszystkim informacjom potrzebnym do poznania kształtu zwracanego wyniku. Podobnie parametry procedury nie są tym samym co kolumny tabeli odczytywanej przez procedurę. Przy interpretowaniu metadanych przydatne jest zestawienie Podstawą identyfikacji jest zazwyczaj kolumna
Widok sys.parameters — typowe problemy podczas odczytuJednym z częstszych problemów jest analizowanie parametrów bez uwzględnienia kontekstu bazy danych. Widoki katalogowe pokazują obiekty dostępne w określonej bazie i w zakresie uprawnień użytkownika wykonującego zapytanie. Jeżeli połączenie wskazuje inną bazę albo konto nie ma prawa odczytu odpowiednich metadanych, wynik może być pusty lub niepełny. Taki rezultat nie musi oznaczać, że procedura nie ma parametrów albo że obiekt nie istnieje. Trudności może powodować również rozróżnienie typu systemowego i typu zdefiniowanego przez użytkownika. Sam identyfikator typu nie zawsze jest wystarczający do przygotowania czytelnej dokumentacji. Należy sprawdzić, czy parametr wykorzystuje typ wbudowany, aliasowy, typ tabelaryczny lub inną konstrukcję wspieraną przez daną wersję systemu. W szczególności typy o zmiennej długości wymagają poprawnej interpretacji wartości opisującej rozmiar. Osobnej uwagi wymaga parametr typu tabelarycznego. Jego opis może obejmować dodatkowe informacje, których nie da się przedstawić wyłącznie jako nazwy prostego typu danych. Do odtworzenia struktury takiego parametru trzeba sprawdzić powiązany typ tabelaryczny, jego kolumny, typy kolumn oraz ewentualne ograniczenia. Samo odczytanie nazwy parametru może prowadzić do zbyt ogólnego opisu. Inny problem pojawia się po zmianie procedury lub funkcji. Metadane mogą być odczytywane poprawnie, lecz aplikacja, skrypt albo dokumentacja nadal mogą używać wcześniejszej wersji deklaracji. Zmiana nazwy, kolejności, typu lub kierunku parametru powinna więc być analizowana razem z miejscami, w których obiekt jest wywoływany. Szczególną ostrożność należy zachować przy zmianach kolejności, ponieważ wywołanie pozycyjne może przekazać poprawnie wyglądające wartości do niewłaściwych argumentów. Nie zawsze można też oczekiwać, że nazwy parametrów będą opisowe. W starszych obiektach mogą występować skróty, nazwy techniczne albo brak nazwy. W takim przypadku znaczenie argumentu trzeba ustalić na podstawie deklaracji, kodu procedury, użycia w zapytaniach oraz dokumentacji aplikacji. Metadane pokazują strukturę, ale nie zawsze wyjaśniają intencję autora. Widok sys.parameters — praktyczne wskazówki do zapytań i dokumentacjiNajbezpieczniej rozpocząć analizę od znalezienia identyfikatora obiektu, a następnie pobrać parametry posortowane według numeru porządkowego. Sortowanie jest ważne, ponieważ kolejność zwróconych wierszy bez jawnego Przykładowy schemat zapytania może wyglądać następująco:
W rzeczywistym użyciu warto doprecyzować warunek łączenia typów, zwłaszcza gdy w bazie występują typy użytkownika o tej samej nazwie lub typy o podobnych właściwościach. Dobrą praktyką jest również uwzględnienie schematu obiektu. Funkcja Jeżeli celem jest dokumentacja, można wygenerować dla każdego obiektu deklarację w postaci: nazwa parametru, typ, właściwości rozmiaru oraz informacja o parametrze wyjściowym. Taki opis należy jednak traktować jako wynik metadanych, a nie jako automatycznie kompletną instrukcję wywołania. Trzeba jeszcze uwzględnić wartości domyślne, reguły walidacji zapisane w kodzie, zależności pomiędzy argumentami oraz możliwe wartości specjalne. Podczas porównywania dwóch środowisk przydatne jest zestawienie wyników po nazwie obiektu i numerze parametru. Należy sprawdzać nie tylko liczbę parametrów, lecz także ich typy, długości, kierunek oraz kolejność. Dzięki temu można wykryć różnice, które nie są widoczne przy pobieżnym porównaniu samej nazwy procedury. Taka kontrola sprawdza się przed wdrożeniem zmian, po odtworzeniu bazy z kopii oraz podczas porządkowania starszych obiektów. Widok sys.parameters — kiedy zgłosić się do serwisuProblemy z odczytem W takich sytuacjach Warszawskie Pogotowie Komputerowe 24/7 zajmuje się diagnostyką sprzętu i problemów związanych z działaniem oprogramowania, z uwzględnieniem bezpiecznego postępowania z danymi użytkownika. Przed rozpoczęciem prac można przygotować nazwę bazy, komunikat błędu, wersję używanego programu oraz informację, czy problem występuje przy jednym obiekcie, czy przy całym połączeniu. Takie dane ułatwiają odtworzenie sytuacji i ograniczają ryzyko przypadkowej zmiany konfiguracji. Nie powinno się usuwać procedur, modyfikować uprawnień ani zmieniać definicji parametrów wyłącznie na podstawie pojedynczego pustego wyniku. Najpierw warto potwierdzić właściwą bazę, konto, schemat i nazwę obiektu, a także sprawdzić, czy problem dotyczy narzędzia, połączenia czy samej bazy. Dopiero po zebraniu tych informacji można bezpiecznie zaplanować dalsze działania. W przypadku ważnych danych zalecane jest wykonanie sprawdzonej kopii przed zmianami w strukturze obiektów. |