SQLDay2011_Sesja02_Collation_Marek Adamczuk

Post on 25-May-2015

839 views 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 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