At its perspective, the concept of collation in SQL Server. Let me explain what are the different characteristics of collation. I will also show what the collation conflict when it occurs and how to deal with it. Lastly, I will live, how we can try to change collation in an existing database.
Master Data Services – Po co nam kolejna usługa w Sql Server - Mariusz Koprowski
SQLDay2011_Sesja02_Collation_Marek Adamczuk
1. Collation
MAREK ADAMCZUK
Lider PLSSUG, MVP
SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server
| Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy
3. O mnie
• Programista w Asseco Business Solutions
• Aktualnie: Szef Wydziału Zarządzania Zmianą,
Jakością i Wiedzą
• Pojawiam się PLSSUG Warszawa
• Pojawiam się na portalu wss.pl (głównie forum SQL
Server)
• SQL Server MVP
4. Agenda
• Czym to jest collation?
• Właściwości collation
• Collation conflict: skąd się bierze i jak go rozwiązać?
• Jak zmienić collation na poziomie serwera, bazy i
kolumny?
Czego nie będzie?
• Planów wykonania
Poziom sesji: 300 … z hakiem
SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server
| Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy
5. Czym jest collation?
Porządek sortowania (porównywania) danych napisowych;
alfabetyzacja
Dla wartości nie-unicode – strona kodowa
Szereg właściwości dotyczących czułości porównywania
To wszystko ukryte pod jednym z 2397(?) predefiniowanych
symboli (SQL 2008 R2 RTM)
Lista: sys.fn_helpcollations()
Na poziomie serwera SERVERPROPERTY('Collation'). Nie z
sys.servers!
Na poziomie bazy danych DATABASEPROPERTYEX('Collation')
Na poziomie kolumny collation_name – w sys.columns
SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server
| Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy
6. Nazwa collation – co oznacza?
Przykłady:
SQL_Polish_CP1250_CI_AS
Japanese_Bushu_Kakusu_100_CS_AS_KS_WS
Przedrostek SQL_ – stare SQL collation kompatybilne z SQL Server
7.0 (wycofywane), teraz obowiązują Windows Collations
Strona kodowa (tylko SQL)
Język (alfabet)
Właściwości
SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server
| Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy
7. Własności collation
CASE – wielkość liter (_CI, _CS)
ACCENT – akcenty; nie znaki diakrytyczne w polskim collation, ale
w innych tak (_AI, _AS)
WIDTH – długość znaku (_WS) – są wąskie (half-width) i szerokie
(full-width)
KANA – alfabet japoński hiragana i katakana (_KS)
SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server
| Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy
8. Hiragana i Katakana
SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server
| Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy
9. Specjalne własności
_BIN – porównanie binarne, zawsze CS
_BIN2 – porównanie binarne uwzględniające UNICODE (code point
comparison)
_100 – porównanie zgodne z Windows 2008
Do odczytania przez funkcję wbudowaną COLLATIONPROPERTY
SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server
| Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy
10. Jakie collation poza wartościami w kolumnach?
Literały
collation aktualnej bazy (?)
Zbiory robocze
zmienne @tablicowe – collation aktualnej bazy (w SQL2000 –
tempdb)
tabele #tymczasowe – collation bazy tempdb (czyli faktycznie
serwera)
Obiekty systemowe (schemat sys)
collation aktualnej bazy (CS lub CI). Używać zawsze małych liter
Nazwy zmiennych
Collation SERWERA. Dlatego bazy pisane na CI rzadko działają
na serwerze CS
SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server
| Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy
11. DEMO: Własności collation
SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server
| Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy
12. Collation conflict
Porównanie wartości o różnych collation – nie ma
konwersji implicite!
Jak sobie radzić?
Zmiana collation kolumny
Klauzula collate
DEMO: Collation conflict
SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server
| Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy
13. Zmiana collation
Na poziomie serwera: zmiana przez setup (na 2000 było narzędzie
rebuildm.exe). Polega na podegraniu nowych baz systemowych
Na poziomie bazy ALTER DATABASE .. COLLATE …
Trzeba najpierw usunąć wszystko zależne od collation
checki, kolumny wyliczane, niektóre obiekty proceduralne
A wcześniej wszystko, od czego są zależne
Potem naprawić collation kolumn
Potem wszystko zdropione odbudować
Na poziomie kolumny tabeli
ALTER TABLE … ALTER COLUMN … COLLATE …
SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server
| Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy
14. DEMO: Zmiana collation in place
SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server
| Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy
15. SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server
| Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy