| Termin | Definicja |
|---|---|
| Kolacja a zgodność wersji | Zależność kolacji od zgodności wersji dotyczy dostępności nowszych reguł sortowania w starszych wydaniach SQL Server. Kolacja w SQL Server a numer wersji silnikaW SQL Server „kolacja” oznacza collation, czyli zestaw reguł określających sposób porównywania i sortowania danych tekstowych. Kolacja wpływa między innymi na kolejność znaków, rozróżnianie wielkości liter, rozróżnianie znaków diakrytycznych oraz interpretację niektórych znaków alfabetów narodowych. Zgodność kolacji z wersją SQL Server ma znaczenie wtedy, gdy baza lub zapytanie korzysta z reguł sortowania wprowadzonych dopiero w nowszym wydaniu silnika. SQL Server zapisuje kolację jako nazwę zawierającą rodzinę reguł, a często także wersję tych reguł. Przykładowo nazwy takie jak Reguły sortowania wprowadzone w nowszych wydaniachNowsze wersje SQL Server mogą zawierać dodatkowe kolacje lub nowsze wersje istniejących rodzin kolacji. Reguły te są związane z aktualizacjami standardu Unicode, zmianami w sortowaniu znaków oraz obsługą kolejnych języków i symboli. Kolacja dostępna w SQL Server 2017 nie musi być dostępna w starszym SQL Server 2012, nawet jeśli oba silniki obsługują podobne rodziny kolacji i typy danych, takie jak Problem pojawia się przy przenoszeniu skryptu, bazy danych albo definicji obiektu do starszego środowiska. Jeżeli skrypt zawiera nazwę kolacji nierozpoznawaną przez docelową wersję SQL Server, wykonanie instrukcji może zakończyć się błędem. Dotyczy to na przykład deklaracji kolumny, wyrażenia z klauzulą Nie należy utożsamiać numeru kolacji z numerem wersji całego serwera. O dostępności konkretnej kolacji decyduje implementacja danego wydania SQL Server oraz zainstalowane aktualizacje, a nie tylko zgodność nazwy produktu z ogólną rodziną SQL. Przy migracji trzeba więc sprawdzić rzeczywistą listę kolacji w środowisku docelowym, zamiast zakładać, że każda kolacja obecna w nowszym serwerze będzie dostępna w starszym. Sprawdzanie dostępności kolacji przed migracjąListę kolacji obsługiwanych przez uruchomioną instancję można sprawdzić za pomocą widoku katalogowego Warto osobno sprawdzić kolację serwera, bazy danych i poszczególnych kolumn. Kolację serwera można odczytać z właściwości instancji, na przykład przez Przy analizie zgodności trzeba również zweryfikować typy danych. Konsekwencje użycia niezgodnej kolacjiNajbardziej oczywistą konsekwencją jest błąd podczas tworzenia albo odtwarzania obiektu, gdy starszy SQL Server nie rozpoznaje nazwy kolacji. Innym przypadkiem jest konflikt między dwoma różnymi kolacjami, który może wystąpić podczas porównywania kolumn tekstowych pochodzących z odmiennych baz danych. W takiej sytuacji zapytanie może wymagać jawnego użycia klauzuli Zmiana kolacji na starszą lub bardziej ogólną nie jest neutralną zamianą techniczną. Może zmienić kolejność sortowania, wynik porównań znaków, działanie unikatowych indeksów oraz rezultat grupowania. Jeżeli dwie wartości były rozróżniane przez wcześniejszą kolację, ale według nowej reguły są traktowane jako równoważne, utworzenie indeksu W praktyce zgodność wersji kolacji w SQL Server należy kontrolować przed migracją, przywracaniem kopii zapasowej, wdrażaniem skryptów oraz zmianą poziomu zgodności bazy. Diagnostyka powinna obejmować wersję instancji, dostępne kolacje, ustawienia bazy i kolumn oraz testy porównań na reprezentatywnych danych. Takie sprawdzenie pozwala odróżnić problem braku obsługi konkretnej kolacji od problemu konfliktu reguł sortowania między obiektami. |