| Termin | Definicja |
|---|---|
| Dokumentacja Microsoft – Collation and Unicode Support | Dokumentacja Microsoft dotycząca Collation and Unicode Support opisuje zasady sortowania znaków i obsługę zestawów kodowania w SQL Server. Dokumentacja Microsoft – Collation and Unicode Support: czym jest ten obszarDokumentacja Microsoft dotycząca Collation and Unicode Support wyjaśnia, w jaki sposób SQL Server interpretuje tekst, porównuje znaki i ustala ich kolejność podczas sortowania. Temat obejmuje dwa powiązane, lecz odrębne zagadnienia: reguły porównywania napisów, określane jako collation, oraz sposób przechowywania znaków należących do różnych alfabetów i systemów pisma. Ma to znaczenie zarówno przy projektowaniu tabel, jak i przy tworzeniu zapytań, indeksów, procedur oraz raportów. Collation nie jest wyłącznie ustawieniem wyglądu wyników. Definiuje między innymi, czy wielkość liter wpływa na porównanie, czy znaki diakrytyczne są rozróżniane oraz jakie reguły językowe są stosowane przy sortowaniu. Unicode pozwala natomiast zapisywać tekst pochodzący z wielu języków w sposób ograniczający ryzyko zastąpienia znaków znakami zapytania lub nieczytelnymi symbolami. W praktyce poprawna konfiguracja obu elementów decyduje o tym, czy wyszukiwanie nazw, nazwisk, adresów, opisów i identyfikatorów będzie przewidywalne. Collation and Unicode Support w dokumentacji Microsoft: kontekst techniczny i porównaniaCollation może być przypisana do różnych poziomów środowiska SQL Server. Występuje między innymi jako ustawienie instancji, bazy danych, kolumny, a w określonych sytuacjach także jako element wyrażenia w zapytaniu. Domyślna reguła na poziomie bazy wpływa na nowo tworzone obiekty, lecz nie zawsze zmienia ustawienia już istniejących kolumn. Z tego powodu sama zmiana konfiguracji bazy nie musi rozwiązać problemu z porównywaniem danych przechowywanych wcześniej. W dokumentacji warto odróżnić typy danych przeznaczone dla tekstu bez prefiksu Unicode od typów obsługujących Unicode. Typy takie jak Ważne jest także rozróżnienie kolacji binarnych i językowych. Kolacja binarna porównuje reprezentacje znaków według ustalonego porządku technicznego, co może być użyteczne przy identyfikatorach, tokenach lub danych, w których każdy znak ma być traktowany dosłownie. Kolacja językowa uwzględnia reguły właściwe dla określonego języka lub rodziny języków. Dwa napisy mogą więc zostać uznane za równe w jednym ustawieniu, a za różne w innym. Przy porównywaniu kolacji pojawia się również kwestia zgodności. Jeżeli wyrażenie, kolumna i zmienna tekstowa mają odmienne reguły, SQL Server może zastosować konwersję niejawną albo zgłosić konflikt kolacji. Konwersja może zmienić sposób wykorzystania indeksu i wpłynąć na wydajność zapytania. Z tego względu porównywanie kolumn o różnych ustawieniach powinno być świadomą decyzją, a nie przypadkowym skutkiem migracji danych. Dokumentacja Microsoft – typowe problemy z Collation and Unicode SupportJednym z częstych problemów jest wyszukiwanie tekstu, które działa inaczej zależnie od użycia wielkich i małych liter. Ustawienie case-insensitive pozwala traktować takie warianty jako równoważne, natomiast case-sensitive zachowuje różnicę. Podobnie działa rozróżnianie znaków diakrytycznych. Dla części zastosowań wyszukanie słowa bez polskiego znaku powinno znaleźć także jego wersję z tym znakiem, ale w innych zastosowaniach identyczność znaków musi być ścisła. Kolejnym kłopotem jest niepoprawne wprowadzanie danych Unicode. Jeżeli tekst wielojęzyczny zostanie zapisany do kolumny o niewłaściwym typie, może dojść do utraty informacji już podczas zapisu. Późniejsza zmiana typu kolumny nie zawsze odtworzy pierwotną treść. Podobne objawy mogą wystąpić w parametrach procedur, zmiennych, zapytaniach generowanych przez aplikację oraz podczas importu plików. Problemy bywają widoczne dopiero przy sortowaniu. Kolejność nazw może wyglądać poprawnie dla jednego alfabetu, ale nie odpowiadać oczekiwaniom użytkowników posługujących się innym językiem. Warto pamiętać, że kolejność sortowania nie jest uniwersalnym porządkiem alfabetycznym. Jest wynikiem zastosowania konkretnej kolacji do konkretnego wyrażenia, a czasem także konwersji pomiędzy różnymi typami danych. Osobną grupę stanowią błędy podczas łączenia tabel. Jeżeli klucze tekstowe w dwóch tabelach mają różne kolacje, operacja Collation and Unicode Support – praktyczne wskazówki wdrożeniowePrace najlepiej rozpocząć od zinwentaryzowania typów danych, kolacji i miejsc, w których tekst jest tworzony lub przekształcany. Należy sprawdzić definicje tabel, parametry procedur, widoki, funkcje, zapytania aplikacyjne oraz procesy importu. Sama kontrola struktury tabel może być niewystarczająca, ponieważ niezgodność może powstawać na granicy aplikacji i bazy. Przy projektowaniu nowych tabel warto jasno określić, czy dana kolumna będzie przechowywała tekst międzynarodowy, czy też ma reprezentować dane techniczne o ścisłym porównaniu znak po znaku. Dla opisów, nazw użytkowników i treści wprowadzanych przez użytkowników zwykle istotna jest obsługa Unicode. Dla kodów, znaczników i identyfikatorów ważniejsze może być jednoznaczne porównanie. Decyzję należy dokumentować przy schemacie, aby późniejsze rozszerzenia nie opierały się na domysłach. Przed zmianą istniejącej kolumny trzeba wykonać kopię danych, sprawdzić długości tekstów i przetestować wartości zawierające znaki diakrytyczne, symbole oraz teksty z różnych alfabetów. Test powinien obejmować zapis, odczyt, sortowanie, wyszukiwanie prefiksowe, porównania równości, indeksy i raporty. Należy też zweryfikować, czy aplikacja przekazuje parametry jako Unicode oraz czy nie dokonuje konwersji do węższego typu po drodze. Klauzula Dokumentacja Microsoft – kiedy zgłosić problem z Collation and Unicode Support do serwisuDo serwisu warto zgłosić się wtedy, gdy po migracji znikają znaki, sortowanie nazw daje nieoczekiwane wyniki, zapytania przestają działać po połączeniu tabel albo wyszukiwanie zależy od wielkości liter w sposób sprzeczny z założeniami aplikacji. Wskazaniem jest również sytuacja, w której zmiana kolacji miała poprawić jeden problem, lecz spowodowała błędy indeksów, procedur lub raportów. Przed przekazaniem sprawy dobrze przygotować fragment definicji tabel, przykładowe wartości, komunikat błędu, wersję SQL Server oraz opis oczekiwanego zachowania. Przydatne są także informacje o źródle danych, sposobie importu i zapytaniu, na którym występuje problem. Takie materiały ułatwiają odróżnienie błędu kolacji od problemu z typem danych, kodowaniem po stronie aplikacji albo konwersją wykonaną podczas migracji. Warszawskie Pogotowie Komputerowe 24/7 może być właściwym miejscem do rozpoczęcia diagnozy, gdy kłopot z bazą objawia się równocześnie nieprawidłowym działaniem komputera, aplikacji lub środowiska pracy. Warto opisać objawy oraz wskazać, czy problem dotyczy tylko jednego programu, czy całego procesu zapisu i odczytu. Dzięki temu analiza może objąć zarówno ustawienia danych, jak i elementy systemu, które uczestniczą w ich przetwarzaniu. |