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

CLR typy danych

Termin Definicja
CLR typy danych

CLR typy danych to niestandardowe typy w SQL Server zaimplementowane za pomocą kodu środowiska .NET.

Czym są typy CLR w SQL Server

CLR typy danych w Microsoft SQL Server to typy użytkownika implementowane w kodzie zarządzanym środowiska Common Language Runtime, czyli CLR platformy .NET. SQL Server może ładować odpowiednie zestawy .NET i korzystać z klas opisujących własną strukturę danych oraz operacje wykonywane na tych danych. Mechanizm ten rozszerza standardowy zestaw typów T-SQL, takich jak int, decimal, nvarchar czy datetime2, ale nie zastępuje ich w typowych zastosowaniach.

W SQL Server CLR jest wykorzystywany między innymi do tworzenia typów użytkownika oraz procedur, funkcji, wyzwalaczy i agregatów napisanych w języku obsługiwanym przez .NET. Dla typu CLR można zdefiniować sposób przechowywania wartości, konwersję do postaci tekstowej, porównywanie oraz operacje dostępne w zapytaniach. Taki typ może reprezentować dane, których struktura lub logika nie mieści się wygodnie w pojedynczej kolumnie prostego typu systemowego.

Struktura i sposób przechowywania wartości

Typ CLR w SQL Server może być typem strukturalnym albo referencyjnym. Typ strukturalny jest przechowywany jako wartość i opisuje dane zdefiniowane przez użytkownika, natomiast typ referencyjny może odwoływać się do obiektu. W praktyce typy użytkownika często modelują specjalistyczne wartości, na przykład identyfikator o określonym formacie, jednostkę miary, złożony numer albo inną wartość wymagającą własnych reguł walidacji i porównywania.

Implementacja typu musi spełniać wymagania SQL Server dotyczące serializacji. Stosuje się serializację natywną, gdy struktura typu jest zgodna z ograniczeniami silnika, albo serializację zdefiniowaną przez użytkownika, gdy potrzebny jest własny sposób przekształcania obiektu do postaci binarnej. Rozmiar danych przechowywanych przez typ CLR ma znaczenie dla wydajności, indeksowania i wykorzystania miejsca w bazie. SQL Server udostępnia również właściwości oraz metody typu, które mogą być wywoływane w zapytaniach, o ile zostały prawidłowo zadeklarowane jako elementy publicznego interfejsu typu.

Rejestracja zestawu i użycie w bazie

Aby użyć własnego kodu CLR, należy utworzyć zestaw .NET i zarejestrować go w konkretnej bazie danych jako assembly. Następnie na jego podstawie definiuje się typ użytkownika poleceniem CREATE TYPE, wskazując nazwę typu SQL oraz klasę lub strukturę znajdującą się w zestawie. Po utworzeniu typu można wykorzystywać go w definicjach tabel, zmiennych, parametrów procedur i funkcji, a także w wyrażeniach obsługiwanych przez SQL Server.

Przykładowo kolumna tabeli może przechowywać wartość typu CLR zamiast kilku oddzielnych pól, jeżeli aplikacja operuje na niej jako na jednym logicznym obiekcie. Dostęp do elementów takiej wartości odbywa się przez właściwości i metody udostępnione przez typ. SQL Server wymaga jednak, aby implementacja zachowywała zgodność z regułami silnika dotyczącymi wartości pustych, konwersji, równości i sortowania. Jeżeli typ ma być używany w indeksach lub porównaniach, jego implementacja musi zapewniać deterministyczne i spójne wyniki odpowiednich operacji.

Włączenie wykonywania kodu CLR w instancji SQL Server jest ustawieniem administracyjnym. Samo zarejestrowanie assembly w bazie nie oznacza automatycznie, że kod może wykonywać dowolne operacje systemowe. Poziom uprawnień zależy od konfiguracji oraz właściwości zestawu, a SQL Server rozróżnia między innymi kod bez dostępu do zasobów zewnętrznych i kod wymagający dostępu do systemu plików, sieci lub innych zasobów. Z tego powodu wdrożenie typu CLR wymaga kontroli źródła assembly, jego zależności, uprawnień oraz sposobu aktualizowania wersji.

Diagnostyka, ograniczenia i zastosowania praktyczne

CLR typy danych są przydatne wtedy, gdy potrzebna jest własna reprezentacja wartości i związana z nią logika, której trudno użyć w samym T-SQL. Mogą wspierać modelowanie danych przestrzennych lub innych struktur o wielu atrybutach, choć SQL Server ma także własne systemowe typy przestrzenne, takie jak geometry i geography. Wybór typu CLR powinien więc wynikać z rzeczywistej potrzeby, a nie tylko z możliwości napisania części kodu w .NET.

Podczas diagnozowania problemów należy sprawdzić, czy assembly jest obecne w tej samej bazie, w której zdefiniowano typ, czy wszystkie zależności zostały zarejestrowane oraz czy sygnatura klasy odpowiada definicji SQL Server. Błędy mogą pojawić się również przy serializacji, konwersji tekstowej, porównywaniu wartości lub zmianie wersji zestawu. Warto analizować definicję typu, zależności assembly, plan zapytania oraz czas wykonywania metod CLR, ponieważ koszt obliczeń w kodzie .NET może stać się istotny przy operowaniu na dużej liczbie wierszy.

Przy awarii komputera używanego do pracy z narzędziami administracyjnymi lub aplikacjami bazodanowymi diagnostyka może obejmować dysk, pamięć operacyjną, system operacyjny, sterowniki i konfigurację środowiska programistycznego.

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