| Termin | Definicja |
|---|---|
| Obsługa Unicode | Obsługa Unicode w SQL Server zapewniają typy z przedrostkiem N, przechowujące pełen zakres znaków. Obsługa Unicode w SQL Server – czym jest i dlaczego ma znaczenieObsługa Unicode oznacza możliwość zapisywania, odczytywania, porównywania i przetwarzania tekstu obejmującego znaki wielu języków oraz różnych systemów pisma. W praktyce dotyczy to nie tylko polskich liter, takich jak ą, ę, ł, ń, ó, ś, ź i ż, lecz także znaków cyrylicy, alfabetu greckiego, znaków azjatyckich, symboli matematycznych, znaków walut, emoji oraz wielu innych elementów zapisywanych w standardzie Unicode. W SQL Server obsługa takiego tekstu zależy przede wszystkim od właściwego typu danych, sposobu zapisu literału, ustawień kolumny i przebiegu operacji na danych. Najważniejsza różnica polega na rozróżnieniu typów znakowych zwykłych i typów przeznaczonych dla Unicode. Typy Sama obecność kolumny typu Obsługa Unicode a typy danych, sortowanie i porównaniaTyp Ważną rolę odgrywa także sortowanie, czyli collation. Określa ono między innymi reguły porównywania znaków, wrażliwość na wielkość liter, sposób traktowania akcentów oraz zasady sortowania właściwe dla określonego języka. Dwa napisy, które wyglądają podobnie, mogą być uznane za równe albo różne zależnie od użytej konfiguracji. Dotyczy to wyszukiwania, sortowania, indeksów, kluczy unikatowych i warunków typu W nowszych wersjach SQL Server istotne są również kolacje z rodziny Przy porównaniach tekstu należy uważać na niejawne konwersje. Gdy jedna strona wyrażenia jest typu Obsługa Unicode – typowe problemy w tabelach i aplikacjachJednym z częstych objawów jest pojawienie się znaków zapytania zamiast liter narodowych. Zwykle oznacza to, że tekst został przekonwertowany do typu, który nie potrafił zachować oryginalnych znaków, albo że literał zapytania nie został oznaczony jako Unicode. Przykładowo zapis Inny problem stanowią krzaczki, czyli nieczytelne symbole powstające wskutek niezgodności kodowania na granicy między plikiem, sterownikiem i bazą. Przy imporcie z CSV lub pliku tekstowego należy sprawdzić kodowanie źródłowe, sposób rozpoznawania separatorów oraz konfigurację narzędzia importującego. Samo zapisanie danych w tabeli jako Problemy mogą wystąpić również przy migracji starszych tabel. Zmiana typu z Czasem pozorna utrata znaku wynika nie z bazy, lecz z warstwy prezentacji. Interfejs może używać niewłaściwej czcionki, formularz może ograniczać dozwolone znaki, a usługa sieciowa może deklarować niezgodne nagłówki lub format serializacji. Dlatego test powinien obejmować zapis, odczyt, przesłanie i wyświetlenie tej samej wartości. Dobrym zestawem kontrolnym jest tekst zawierający polskie znaki, kilka znaków spoza alfabetu łacińskiego, symbol waluty, znak łączony oraz emoji. Obsługa Unicode – praktyczne wskazówki projektowe i testoweProjektowanie warto rozpocząć od określenia, jakie języki i znaki mają być obsługiwane. Jeśli dane pochodzą od użytkowników lub mogą być wymieniane z innymi systemami, bezpieczniej jest przyjąć szerszy zakres niż ograniczać się do bieżących przykładów. Kolumny przeznaczone na nazwy, opisy, wiadomości, etykiety i dane kontaktowe powinny być dobierane z myślą o możliwych znakach Unicode. Należy też rozróżnić maksymalną długość biznesową od technicznego limitu pola i ustalić, czy długość ma być mierzona w znakach, czy w jednostkach używanych przez konkretny typ i wersję silnika. Zapytania powinny korzystać z parametrów zamiast sklejania tekstu. Parametry ograniczają ryzyko wstrzyknięcia kodu, pomagają zachować znaki specjalne i pozwalają sterownikowi prawidłowo przekazać wartość Unicode. W przypadku stałych tekstowych w kodzie SQL należy pamiętać o przedrostku Testy powinny sprawdzać nie tylko prosty zapis i odczyt, lecz także wyszukiwanie, sortowanie, filtrowanie bez rozróżniania wielkości liter, porównywanie znaków akcentowanych, unikatowość oraz eksport. Warto testować znaki, które wizualnie przypominają inne znaki, kombinacje złożone z kilku kodów, znaki spoza podstawowego alfabetu oraz tekst mieszany. Przy emoji należy uwzględnić fakt, że pojedynczy widoczny symbol może składać się z kilku elementów, na przykład znaku bazowego, modyfikatora koloru i łącznika. Przy diagnostyce przydatne jest porównanie wartości zapisanej w bazie z wartością przesłaną przez aplikację. Można sprawdzić typ parametrów, długość tekstu, reprezentację szesnastkową oraz collation używane przez wyrażenie. Istotne jest także odróżnienie pustego ciągu od wartości Obsługa Unicode – kiedy zgłosić się do serwisuDo serwisu warto zgłosić problem wtedy, gdy polskie lub zagraniczne znaki znikają po zapisie, są zastępowane znakami zapytania, pojawiają się jako nieczytelne symbole albo działają poprawnie tylko w jednym programie. Pomocna będzie informacja, w którym miejscu następuje zmiana: podczas importu, w formularzu, w zapytaniu SQL, w raporcie, przy eksporcie czy dopiero na ekranie. Przygotowanie przykładowej wartości, nazwy tabeli, typu kolumny i fragmentu komunikatu błędu ułatwia odtworzenie problemu. Warto skorzystać ze wsparcia także wtedy, gdy planowana jest migracja z Przed przekazaniem zgłoszenia dobrze zanotować wersję SQL Server, używany program, rodzaj źródła danych, przykładowy tekst oraz oczekiwany rezultat. Nie należy przesyłać haseł ani pełnych baz zawierających dane osobowe. Wystarczy zanonimizowany przykład odtwarzający błąd. Dzięki temu można skupić analizę na typach danych, kodowaniu, parametrach, collation i przepływie informacji, zamiast przypadkowo modyfikować dane produkcyjne. |