| Termin | Definicja |
|---|---|
| Windows Collation | Windows Collation to grupa kolacji SQL Server oparta na ustawieniach lokalizacji systemu Windows. Windows Collation jako sposób porządkowania tekstuWindows Collation to określony zestaw reguł używanych podczas porównywania, sortowania i wyszukiwania napisów w środowisku SQL Server. Nazwa może sugerować pojedynczą funkcję systemu Windows, jednak w praktyce chodzi o uzgodniony sposób interpretowania znaków, wielkości liter, znaków diakrytycznych oraz kolejności alfabetycznej. Collation wpływa więc na to, czy dwa teksty zostaną uznane za identyczne, czy jeden napis będzie występował przed drugim oraz jak będą działały operacje wykonywane na kolumnach tekstowych. W ustawieniach związanych z Windows Collation reguły porównywania są powiązane z językiem i lokalizacją systemu Windows. Dzięki temu sortowanie nazw, miejscowości, nazwisk lub opisów może odpowiadać przyzwyczajeniom użytkowników danego regionu. Dla danych polskojęzycznych znaczenie ma między innymi sposób traktowania liter takich jak ą, ć, ę, ł, ń, ó, ś, ź i ż. Nie chodzi wyłącznie o wygląd wyników. Wybrana collation może zmienić działanie równości, klauzul ORDER BY, filtrów LIKE, indeksów oraz ograniczeń UNIQUE. Warto odróżnić collation od kodowania znaków. Kodowanie określa, w jaki sposób znaki są zapisane w pamięci lub pliku, natomiast collation opisuje, jak te znaki są rozpoznawane i porównywane. Dwa środowiska mogą przechowywać podobny zestaw znaków, ale zwracać inną kolejność wyników albo inaczej oceniać zgodność tekstów. W SQL Server ustawienie collation może występować na poziomie instancji, bazy danych, kolumny, wyrażenia, a w niektórych sytuacjach także pojedynczej operacji. Windows Collation a sortowanie, wielkość liter i znaki polskieJednym z najważniejszych elementów definicji collation są sufiksy opisujące sposób porównywania. Oznaczenie CI zwykle wskazuje na porównywanie niewrażliwe na wielkość liter, czyli case-insensitive. W takim wariancie wyrazy różniące się wyłącznie zapisem małymi i wielkimi literami mogą być traktowane jako równoważne. Oznaczenie CS oznacza tryb wrażliwy na wielkość liter, case-sensitive. Wtedy zapis „Ala” i „ala” może mieć inne znaczenie podczas filtrowania lub sprawdzania unikalności. Podobnie działają oznaczenia AI i AS. AI oznacza porównywanie niewrażliwe na akcenty i znaki diakrytyczne, natomiast AS zachowuje rozróżnienie takich znaków. W praktyce wybór ma znaczenie dla wyszukiwania polskich nazw. Jeżeli reguły ignorują część różnic, zapytanie może zwrócić więcej rekordów, niż oczekiwano. Jeżeli reguły są bardziej rygorystyczne, wyszukiwanie może wymagać dokładnego wpisania znaku diakrytycznego. Wariant Windows Collation może określać także sposób sortowania zgodny z zasadami konkretnego języka. Jest to istotne przy listach osób, produktów, adresów i dokumentów. Kolejność uzyskana w zapytaniu nie zawsze odpowiada prostemu porządkowi wynikającemu z kodów znaków. Reguły językowe mogą uwzględniać relacje między znakami, dwuznakami i odmianami zapisu. Dlatego testowanie samego sortowania na krótkiej liście nie zawsze wystarcza. Należy sprawdzić pełny zestaw danych, w tym wartości z polskimi znakami, różnymi wielkościami liter, spacjami i znakami specjalnymi. W systemach wielojęzycznych trzeba rozstrzygnąć, czy jedno ustawienie ma obsługiwać wszystkie dane, czy poszczególne kolumny powinny korzystać z odmiennych zasad. Zbyt ogólne ustawienie może utrudniać poprawne sortowanie niektórych języków, a zbyt duża liczba wyjątków może zwiększać ryzyko konfliktów podczas łączenia danych. Windows Collation sprawdza się najlepiej wtedy, gdy jego wybór wynika z rzeczywistego języka danych i sposobu pracy użytkowników. Windows Collation w zapytaniach i relacjach między tabelamiRóżnice collation stają się szczególnie widoczne podczas łączenia tabel, porównywania kolumn albo przenoszenia danych między bazami. Jeżeli dwa tekstowe pola korzystają z odmiennych reguł, SQL Server może zgłosić konflikt collation przy operacji JOIN, UNION, porównaniu warunkowym lub niektórych funkcjach tekstowych. Problem nie musi oznaczać uszkodzenia danych. Często wynika z tego, że obie strony porównania mają inną wrażliwość na wielkość liter, akcenty albo inną rodzinę reguł językowych. Takiego konfliktu nie powinno się usuwać przypadkowym ustawieniem dopisywanym do każdego zapytania. Klauzula COLLATE może jawnie narzucić sposób porównania dla wyrażenia, kolumny lub fragmentu warunku, ale należy sprawdzić konsekwencje takiej decyzji. Zmiana reguł może wpłynąć na liczbę dopasowanych wierszy, wykorzystanie indeksu oraz wynik sortowania. Jeżeli porównanie odbywa się na dużej tabeli, zastosowanie funkcji lub konwersji po stronie kolumny może dodatkowo pogorszyć plan wykonania. Przy projektowaniu tabel dobrze jest ustalić zasady jeszcze przed wprowadzeniem dużej ilości danych. Należy określić, które pola mają być traktowane jako identyfikatory techniczne, które jako tekst przeznaczony do prezentacji, a które jako wartości wymagające rozróżniania znaków. Login, kod produktu, adres poczty elektronicznej i opis produktu mogą mieć różne wymagania, nawet jeśli wszystkie są przechowywane jako tekst. Nie ma jednej collation odpowiedniej dla każdego zastosowania. Windows Collation ma również znaczenie przy indeksach i ograniczeniach unikalności. Jeżeli collation jest niewrażliwa na wielkość liter, wartości różniące się wyłącznie zapisem mogą zostać potraktowane jako duplikaty. Przy collation wrażliwej na wielkość liter mogą natomiast przejść jako osobne wartości. Podobne różnice występują w wyszukiwaniu przy użyciu LIKE oraz przy grupowaniu wyników. Zmiana collation po utworzeniu indeksów lub po załadowaniu danych powinna być poprzedzona kopią zapasową, analizą zależności i testem na środowisku roboczym. Windows Collation i typowe problemy diagnostyczneJednym z typowych objawów niezgodności jest błąd pojawiający się dopiero przy łączeniu danych z dwóch tabel. Innym sygnałem są niespodziewane duplikaty, brak oczekiwanego dopasowania albo inna kolejność alfabetyczna po przeniesieniu bazy na nowe środowisko. Czasami problem ujawnia się dopiero po imporcie pliku, zmianie ustawień regionalnych lub odtworzeniu bazy z kopii pochodzącej z innego komputera. Diagnostykę warto rozpocząć od ustalenia collation na kilku poziomach. Sprawdza się ustawienie instancji, ustawienie konkretnej bazy oraz definicje tabel i kolumn tekstowych. Następnie porównuje się typy danych, długości pól i sposób ich konwersji. Pomocne jest przygotowanie małego zestawu kontrolnego zawierającego wielkie i małe litery, polskie znaki, znaki podobne wizualnie, spacje na początku i końcu oraz wartości różniące się tylko jednym symbolem. Nie należy utożsamiać problemu collation z każdym błędem wyświetlania znaków. Krzaczki, znaki zapytania lub utracone polskie litery mogą wskazywać na nieprawidłowe kodowanie, niewłaściwy typ danych albo błędną konwersję podczas importu. Collation odpowiada głównie za porównywanie i sortowanie, choć jej ustawienie może współdziałać z doborem typu znakowego. Rozdzielenie tych obszarów znacznie ułatwia znalezienie przyczyny. Ostrożność jest potrzebna również podczas migracji. Automatyczne narzędzia mogą zachować strukturę tabel, ale nie zawsze rozwiązują konflikty w zapytaniach, procedurach, widokach i indeksach. Przed zmianą ustawień należy sprawdzić zapytania wykorzystujące sortowanie, wyszukiwanie tekstowe, grupowanie i relacje między polami. Warto też zapisać aktualne definicje, wykonać próbny import oraz porównać liczbę i kolejność wyników przed i po zmianie. Windows Collation przed zgłoszeniem problemu do serwisuPrzed przekazaniem problemu do serwisu można przygotować informacje, które skrócą analizę. Przydatne są komunikaty błędów, fragment zapytania powodującego problem, nazwy tabel i kolumn, przykład wartości niedopasowanych oraz opis czynności wykonanych bezpośrednio przed wystąpieniem usterki. Dobrze zachować także informację, czy problem pojawia się przy sortowaniu, wyszukiwaniu, imporcie, eksporcie, łączeniu tabel czy po odtworzeniu bazy na innym komputerze. Nie powinno się samodzielnie zmieniać ustawień collation na działającej bazie bez sprawdzenia zależności. Taka modyfikacja może wymagać przebudowy indeksów, korekty kluczy, ponownej walidacji danych i aktualizacji zapytań. Bezpieczniejszym podejściem jest najpierw odtworzenie problemu na kopii, porównanie ustawień oraz sprawdzenie, czy wystarczy jawne wskazanie reguł dla pojedynczego wyrażenia. Przydatne może być także rozdzielenie błędu zapisu znaków od błędu ich porównywania. W przypadku problemów z komputerem, bazą danych lub konfiguracją środowiska można skorzystać ze wsparcia firmy Warszawskie Pogotowie Komputerowe 24/7. Przy zgłoszeniu warto opisać objawy własnymi słowami i wskazać, czy kłopot dotyczy jednego programu, kilku aplikacji czy danych przenoszonych między komputerami. Tak przygotowane zgłoszenie ułatwia ocenę sytuacji i ogranicza ryzyko wprowadzania przypadkowych zmian w ustawieniach. |