Język polski w SQL Server 2012
W kwietniu nie można pominąć przewrotnie spraw dla Nas ważnych – spraw związanych z poszanowaniem Naszego polskiego języka.
W świecie IT swoistym “lingua franca” jest język angielski – developerzy, administratorzy, urządzenia porozumiewają się między sobą przedziwną mieszanką terminów angielskich (uwielbiane skrótowce), polskich (najczęściej całkowicie niezrozumiałych) oraz “polskawych” ( spolszczonych w sposób najprostszy poprzez dodanie końcówek osobowych do wyrazów angielskich). Taki slang tożsamy dla “świata IT”…. ![]()
Dotychczas SQL Server nie wiedział co to język polski…… i trzeba było sobie z tym radzić. Z punktu widzenia DBA – błędy jakimi platforma bazodanowa SQL Server zasypywała końcowego użytkownika , był problemem:
a) developera (powinien przechwycić błąd i potraktować użytkownika delikatniej, tłumacząc co należy zrobić, aby było dobrze)
b) użytkownika ( języków trzeba się uczyć – przecież w komunikacie błędu napisane jest wszystko)
To się chyba sprowadzało do tego, że użytkownik końcowy ( Information Worker – aby było wiadomo o jakim userze piszę) klikał ‘OK’ i już. Potem ewentualnie dzwonił do supportu.
Aby pokazać różnice przygotowałem następujące środowisko (SQL Server 2012 RTM oraz SQL Server 2008 RTM połączone przy użyciu Linked Server)
Dotychczas SQL Server “rozumiał” język polski jako zestaw ustawień lokalizacyjnych (określenie pierwszego dnia tygodnia, format daty, nazwy miesięcy, nazwy dni) – szczegóły oczywiście w Books On Line - sys.syslanguages (Transact-SQL). I to się nie zmieniło … ![]()
Lista języków systemowych w SQL Server 2012 powiększyła się o nowy język
SELECT sl.langid AS [LangId2012], sl.msglangid AS [MsLangId2012], sl.alias AS [Alias2012], sl.name AS [Name2012], sl1.langid AS [LangId2008], sl1.name AS [Name2008] FROM sys.syslanguages sl LEFT JOIN [T61_TEST\SQL2008R2].master.sys.syslanguages sl1 ON sl1.langid = sl.langid ORDER BY sl.langid DESC
Komunikaty błędów w języku polskim to pierwsza nowość. Zobaczmy jakie języki pojawiły się w sys.messages w SQL Server 2012.
WITH JEZYKI AS ( SELECT distinct sm.language_id AS [SQL2012Id], sm1.language_id AS [SQL2008Id], sl.name AS [SQL2012Name] FROM sys.messages sm LEFT JOIN [T61_TEST\SQL2008R2].master.sys.messages sm1 ON sm1.language_id = sm.language_id LEFT JOIN sys.syslanguages sl ON sm.language_id = sl.msglangid ) SELECT * FROM JEZYKI ORDER BY SQL2008Id
No i na koniec zadajmy ostatnie pytanie – Czy wszystkie języki mają taką samą ilość wiadomości ?
WITH Liczby AS ( SELECT COUNT(m.message_id) AS [Ile], m.language_id FROM sys.messages AS m GROUP BY language_id ) SELECT l.Ile, l.language_id, sl.name FROM Liczby AS l INNER JOIN sys.syslanguages AS sl ON sl.msglangid = l.language_id
Rezultat – trochę ograniczony (wynik jest zwracany dla 23 języków) – pokazuje, że każdy język ma równą ilość wiadomości systemowych….
SQL Server 2012 dla użytkowników posługujących się językiem polskim będą mieli “zrozumiałe” dla nich błędy
. Dotychczas tylko nasze własne błędy(message_id>=50000) z określonym language_id = 1045 (język polski) mogły być wyświetlane dla użytkownika końcowego, pozostałe były wyświetlane w języku domyślnym dla instancji.
Tyle na tą chwilę – w kolejnej części – napiszę jakie zmiany zostały wprowadzone w silniku wyszukiwania pełnotekstowego (Full-Text Search) w kontekście języka polskiego.











