SQLDay2011_Sesja02_Collation_Marek Adamczuk
-
Upload
polish-sql-server-user-group -
Category
Documents
-
view
840 -
download
1
description
Transcript of SQLDay2011_Sesja02_Collation_Marek Adamczuk
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
SPONSORZY I PARTNERZY
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
• 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
Agenda
SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server | Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy
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
Czym jest 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
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
Nazwa collation – co oznacza?
SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server | Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy
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)
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
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
_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
Specjalne własnoś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
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
Jakie collation poza wartościami w kolumnach?
SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server | Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy
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
Porównanie wartości o różnych collation – nie ma konwersji implicite!
Jak sobie radzić?
Zmiana collation kolumny
Klauzula collate
DEMO: Collation conflict
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
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 …
Zmiana 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
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
SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server | Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy
SPONSORZY I PARTNERZY