| Termin | Definicja |
|---|---|
| SQL Server Collation | SQL Server Collation to ustawienie określające reguły sortowania i porównywania danych tekstowych. SQL Server Collation — czym jest i za co odpowiadaSQL Server Collation to zestaw reguł używanych podczas interpretowania, porównywania, sortowania i wyszukiwania danych tekstowych. Ustawienie to wpływa między innymi na kolejność znaków, rozróżnianie wielkich i małych liter, traktowanie znaków diakrytycznych oraz sposób obsługi alfabetów właściwych dla określonych języków. W praktyce collation decyduje o tym, czy wartości „Kowalski” i „kowalski” zostaną uznane za identyczne, a także czy „z”, „ź” i „ż” będą porządkowane zgodnie z oczekiwaniami użytkownika. Collation może być ustawione na kilku poziomach: dla całej instancji, konkretnej bazy danych, kolumny tekstowej, wyrażenia lub pojedynczej operacji w zapytaniu. Domyślne ustawienie jest dziedziczone z poziomu wyższego, ale może zostać zastąpione bardziej szczegółową konfiguracją. Dzięki temu jedna baza może korzystać z określonych zasad językowych, a wybrana kolumna albo fragment zapytania może działać według innych reguł. W nazwie collation często znajdują się skróty opisujące jej właściwości. Oznaczenie „CI” zwykle informuje o braku rozróżniania wielkości liter, natomiast „CS” oznacza rozróżnianie wielkich i małych liter. „AI” wskazuje na nieuwzględnianie akcentów i znaków diakrytycznych, a „AS” na ich rozróżnianie. W nowszych konfiguracjach można spotkać również warianty związane z kodowaniem UTF-8, sortowaniem binarnym oraz szczegółowym dopasowaniem zasad językowych. Collation SQL Server w kontekście języka, sortowania i porównańWybór collation ma znaczenie wszędzie tam, gdzie tekst jest porównywany lub układany w określonej kolejności. Dotyczy to klauzul Przykładowo, w collation niewrażliwej na wielkość liter zapytanie wyszukujące „warszawa” może zwrócić także „Warszawa” i „WARSZAWA”. W ustawieniu wrażliwym na wielkość liter wynik może być ograniczony wyłącznie do zapisu dokładnie zgodnego z warunkiem. Podobna różnica występuje przy polskich znakach. W zależności od wybranych reguł „Lodz” i „Łódź” mogą być potraktowane jako wartości równoważne albo jako dwa odrębne teksty. Nie należy utożsamiać collation wyłącznie z kodowaniem znaków. Kodowanie określa sposób zapisania znaków w pamięci lub pliku, natomiast collation opisuje sposób ich porównywania i porządkowania. Oba zagadnienia są powiązane, ale rozwiązują inne problemy. Współczesne środowiska często wykorzystują typy Osobną kategorię stanowią collations binarne. Porównanie odbywa się wtedy na podstawie wartości kodów znaków, a nie pełnego zestawu reguł językowych. Takie ustawienie może zapewniać przewidywalne i szybkie porównania technicznych identyfikatorów, tokenów lub kluczy, ale nie zawsze odpowiada oczekiwaniom dotyczącym naturalnego porządku językowego. Dla nazw wyświetlanych użytkownikom częściej potrzebne są reguły językowe niż czysto binarne. SQL Server Collation — typowe problemy i błędyJednym z częstszych problemów jest konflikt collation podczas łączenia danych pochodzących z różnych tabel, baz albo źródeł. Jeżeli dwa porównywane pola tekstowe mają niezgodne ustawienia, zapytanie może zakończyć się błędem dotyczącym konfliktu collation. Problem pojawia się między innymi przy operacjach Doraźnym rozwiązaniem bywa zastosowanie klauzuli Problemy mogą dotyczyć także indeksów i ograniczeń unikalności. W collation niewrażliwej na wielkość liter wartości „ABC” i „abc” mogą być uznane za takie same, dlatego nie zawsze da się zapisać je jednocześnie w kolumnie z unikalnym ograniczeniem. Zmiana collation może więc wpłynąć nie tylko na wyniki wyszukiwania, ale także na możliwość dodawania rekordów i działanie istniejących indeksów. Ryzyko pojawia się również podczas migracji danych. Zmiana zasad porównywania może ujawnić wcześniej ukryte duplikaty, zmienić kolejność wyników albo spowodować konwersję znaków do niepożądanego formatu. Przed zmianą ustawień należy wykonać kopię zapasową, sprawdzić typy kolumn, przeanalizować indeksy i wykonać testy na reprezentatywnym zestawie danych. Szczególnej uwagi wymagają nazwy własne, identyfikatory importowane z innych systemów oraz pola, w których wielkość liter ma znaczenie biznesowe. Collation w SQL Server — praktyczne wskazówki konfiguracjiNajbezpieczniej rozpocząć od ustalenia, jakie języki i rodzaje danych będą przechowywane. Dla treści przeznaczonej dla użytkowników należy wybrać reguły zgodne z językiem aplikacji i oczekiwanym porządkiem sortowania. Dla kodów, identyfikatorów, skrótów i wartości, w których liczy się dokładna zgodność znak po znaku, można rozważyć ustawienia wrażliwe na wielkość liter albo wariant binarny. Decyzja powinna wynikać z funkcji pola, a nie z samej nazwy kolumny. Warto zachować spójność pomiędzy tabelami, które będą regularnie łączone. Jednolite ustawienia ograniczają ryzyko konfliktów, ułatwiają projektowanie indeksów i zmniejszają liczbę koniecznych konwersji. Jeżeli różne zasady są wymagane, należy opisać je w dokumentacji schematu oraz uwzględnić w testach aplikacji. Przy projektowaniu nowych tabel dobrze jest świadomie określić collation kolumn tekstowych, zamiast polegać wyłącznie na ustawieniu odziedziczonym z bazy. Przy analizie zapytania należy zwracać uwagę na implicit conversion, czyli niejawne konwersje typów i ustawień. Konwersja w warunku porównania może zmienić sposób użycia indeksu i pogorszyć wydajność. Pomocne jest sprawdzanie planu wykonania, typów danych oraz właściwości kolumn, a także porównywanie zachowania zapytania przed i po zmianie ustawień. Sam fakt, że zapytanie zwraca poprawne wyniki, nie oznacza jeszcze, że działa optymalnie. Przy testach należy uwzględnić wielkie i małe litery, polskie znaki, znaki akcentowane, wartości puste, spacje oraz teksty pochodzące z różnych źródeł. Należy sprawdzić sortowanie, wyszukiwanie częściowe, grupowanie, deduplikację i ograniczenia unikalności. Tak przygotowany zestaw testowy pozwala wykryć różnice, które mogłyby pozostać niezauważone przy użyciu wyłącznie prostych danych przykładowych. SQL Server Collation — kiedy zgłosić problem do serwisuWsparcie serwisowe może być potrzebne, gdy po migracji pojawiają się błędy konfliktu collation, znikają oczekiwane wyniki wyszukiwania albo sortowanie polskich znaków przestaje odpowiadać potrzebom aplikacji. Warto skonsultować także sytuację, w której zmiana collation ma objąć istniejącą bazę z dużą liczbą tabel, indeksów i zależności. Przed wdrożeniem można wtedy przeanalizować strukturę danych, przygotować plan kopii zapasowej i sprawdzić wpływ zmiany na zapytania oraz aplikacje. W ramach pomocy Warszawskiego Pogotowia Komputerowego 24/7 można zlecić analizę przyczyn problemów z działaniem środowiska komputerowego, w tym diagnostykę błędów występujących podczas pracy z bazami danych. Naprawy są z reguły realizowane do 3 dni roboczych, a zakres czynności powinien zostać ustalony po rozpoznaniu objawów i dostępnej konfiguracji. Przy zgłoszeniu dobrze jest przekazać komunikat błędu, fragment zapytania, nazwę używanego collation oraz informację, po jakiej zmianie problem się pojawił. Nie zaleca się samodzielnej zmiany collation całej bazy bez wcześniejszej kopii zapasowej i testów. Taka operacja może oddziaływać na kolumny, indeksy, ograniczenia, procedury oraz aplikacje korzystające z danych. W przypadku pojedynczego zapytania bezpieczniejszym krokiem bywa najpierw sprawdzenie lokalnego użycia |