sqlday2011_sesja02_collation_marek adamczuk

16
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

Upload: polish-sql-server-user-group

Post on 25-May-2015

838 views

Category:

Documents


1 download

DESCRIPTION

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.

TRANSCRIPT

Page 1: 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

Page 2: SQLDay2011_Sesja02_Collation_Marek Adamczuk

SPONSORZY I PARTNERZY

Page 3: SQLDay2011_Sesja02_Collation_Marek Adamczuk

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

Page 4: SQLDay2011_Sesja02_Collation_Marek Adamczuk

• 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

Page 5: SQLDay2011_Sesja02_Collation_Marek Adamczuk

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

Page 6: SQLDay2011_Sesja02_Collation_Marek Adamczuk

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

Page 7: SQLDay2011_Sesja02_Collation_Marek Adamczuk

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

Page 8: SQLDay2011_Sesja02_Collation_Marek Adamczuk

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

Page 9: SQLDay2011_Sesja02_Collation_Marek Adamczuk

_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

Page 10: SQLDay2011_Sesja02_Collation_Marek Adamczuk

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

Page 11: SQLDay2011_Sesja02_Collation_Marek Adamczuk

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

Page 12: SQLDay2011_Sesja02_Collation_Marek Adamczuk

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

Page 13: SQLDay2011_Sesja02_Collation_Marek Adamczuk

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

Page 14: SQLDay2011_Sesja02_Collation_Marek Adamczuk

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

Page 15: SQLDay2011_Sesja02_Collation_Marek Adamczuk

SQLDAY 2011 – Czwarta Doroczna Konferencja Polskiej Grupy Użytkowników SQL Server | Wrocław 18 Czerwca 2011, Ośrodek Szkolenia Państwowej Inspekcji Pracy

Page 16: SQLDay2011_Sesja02_Collation_Marek Adamczuk

SPONSORZY I PARTNERZY