SQLDay2011_Sesja02_Collation_Marek Adamczuk

1,155 views

Published on

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.

  • Be the first to comment

  • Be the first to like this

SQLDay2011_Sesja02_Collation_Marek Adamczuk

  1. 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
  2. 2. SPONSORZY I PARTNERZY
  3. 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. 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. 5. Czym jest collation?Porządek sortowania (porównywania) danych napisowych;alfabetyzacjaDla wartości nie-unicode – strona kodowaSzereg właściwości dotyczących czułości porównywaniaTo wszystko ukryte pod jednym z 2397(?) predefiniowanych symboli (SQL 2008 R2 RTM) Lista: sys.fn_helpcollations()Na poziomie serwera SERVERPROPERTY(Collation). Nie zsys.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. 6. Nazwa collation – co oznacza?Przykłady: SQL_Polish_CP1250_CI_AS Japanese_Bushu_Kakusu_100_CS_AS_KS_WSPrzedrostek SQL_ – stare SQL collation kompatybilne z SQL Server7.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. 7. Własności collationCASE – wielkość liter (_CI, _CS)ACCENT – akcenty; nie znaki diakrytyczne w polskim collation, alew 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. 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. 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 2008Do 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. 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. 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. 12. Collation conflictPorównanie wartości o różnych collation – nie makonwersji implicite!Jak sobie radzić? Zmiana collation kolumny Klauzula collateDEMO: 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. 13. Zmiana collationNa poziomie serwera: zmiana przez setup (na 2000 było narzędzierebuildm.exe). Polega na podegraniu nowych baz systemowychNa 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. 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. 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
  16. 16. SPONSORZY I PARTNERZY

×