osql i polskie znaki

W poprzednim tekście napisałem, że w przypadku SQL Servera 2000 do automatyzacji zadań możemy wykorzystać osql. Niestety może on mieć problem w przypadku gdy chcemy załadować plik zawierający polskie znaki. Na szybko można wykorzystać dwa rozwiązania:

  • zamiana strony kodowej ładowanego pliku,
  • lub uruchomienie Query Analyzera z poziomu konsoli

Na początek z grubsza skąd się bierze problem. Uruchamiając polecenie cmd lub z poziomu T-SQL xp_cmdshell wywoływana jest sesja ze ustawioną w Windows stroną kodową OEM (jakie są strony OEM – popatrz na stronie Microsoftu). Pisząc kod w dowolnym edytorze zapisujemy go jako ANSI (lub UTF). osql nie potrafi przeprowadzić szybkiej konwersji między OEM i ANSI stąd w efekcie zamiast polskich liter otrzymujemy krzaki. Jeśli chcesz wiedzieć coś więcej przeczytaj np. tą wypowiedź Erlanda Sommarskoga na grupach dyskusyjnych.

Pierwsze rozwiązanie – aby zmienić stronę kodową można albo ściągnąć z sieci pierwsze z brzegu narzędzie, albo prościej w Query Analyzerze wybrać File > Save As… i w polu Format ustawić OEM. Tracimy jednak polskie znaki otwierając plik w zwykłym edytorze tekstu.

Drugie rozwiązanie – zamiast osql uruchamiać isqlw. To Query Analyzer, ale jeśli podamy parametry pliku wejściowego i wyjściowego proces uruchamia się w tle i automatycznie kończy po wykonaniu operacji. Składnia jest bardzo zbliżona do osql, a dodatkowo możemy przełącznikiem -F wymusić format plików we/wy. Jeśli nie podamy wówczas QA sam stara się go zgadnąć. Dla porządku polecenie:

isql -E -d Baza -i e:\sql\plik.sql -o e:\log\sql_log.txt

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s