Spis treści:

Kategoria:SQL Server


Różnica między sysobjects.xtype a sysobjects.type

Są w SQL Server takie obszary, których rzadko się dotyka. Są też takie miejsca, które są dość tajemnicze. Są w końcu takie, których używamy i nawet do końca nie wnikamy, czy używamy ich właściwie. Ważne w tym wszystkim jest to, że jakoś to wszystko działa. Obszarem, który przysparza problemy jest obecność dwóch, prawie identycznych kolumn w tabeli sysobjects. Są to kolumny type oraz xtype.

Przypomnę może dla niewtajemniczonych, że w tabeli sysobjects znajdują się rekordy opisujące każdy obiekt bazy danych, między innymi więzy integralności, wartości domyślne dla kolumn, klucze główne o obce, procedury składowane, wyzwalacze, widoki i inne.

Problemy nastręcza to, że w zdecydowanej większości przypadków wartości w tych kolumnach powtarzają się. Dokumentacja SQL Server też niewiele tutaj pomaga, bo każda z kolumn opisana jest w sposób następujący: Object type., czyli typ obiektu.

Nieścisłości i pewnego rodzaju nadmiarowość zostały pewnie dostrzeżone przez Microsoft, co doprowadziło do rozwiązania tego problemu w nowszych wersjach SQL Serverów. Obecnie jedynie słuszną tabelą pełniącą te same funkcje jest sys.objects.

Jaka jest zatem różnica?

Różnica jest subtelna i można ją dostrzec tylko w nielicznych przypadkach. Rzeczywiście obie kolumny zawierają typ obiektu. Co więcej, prawdą jest, że w zdecydowanej większości wartości w tych kolumnach zdefiniowane jako char(2) powtarzają się. Różnica pojawia się na dwóch polach. Są to:

  • więzy unikalności, czyli UNIQUE CONSTRAINT
  • klucz główny, czyli PRIMARY KEY

UNIQUE CONSTRAINT ma w kolumnie type wartość K, natomiast w kolumnie xtype wartość UQ. PRIMARY KEY ma w kolumnie type wartość K, natomiast w kolumnie xtype wartość PK. Jak widać kolumna xtype jest bardziej wyspecjalizowana.

Jak już zostało wcześniej wspomniane, obecnie należy używać tylko i wyłącznie tabeli sys.objects. Problem dwóch kolumn rozwiązuje się sam.

Kategoria:SQL Server

, 2013-12-20

Brak komentarzy - bądź pierwszy

Dodaj komentarz
Wyślij
Ostatnie komentarze
Kalkulator, jak kalkulator, na pewno nie uwzględnia wielu rzeczy. Dla przykładu, jedziemy po asfalcie, ja na rowerze trial (14 kg, opony 29x2,6) a obok mnie kolega na szosie. Robimy te same kilometry w tym samym czasie i niby tyle samo wysiłku włożyliśmy? Druga kwestia, idę na owym rowerze pojeździć po lesie, podjazd, zjazd, piasek etc. To nie to samo co jazda po ścieżce.
Całkiem niezły kalkulator, porównując rezultaty z suunto 9 baro wartości są niemal identyczne z tymże byłoby jeszcze lepiej gdyby dodać prędkość wiatru i przewyższenia. Zdecydowanie najlepszy kalkulator w necie.
Super wyjasnione, czytalo sie bardzo lekko. Dzieki i pozdrawiam
puściłem benta i leci klockiem w pomieszczeniu, w którym kodujemy