From 6bb08b9a77ab0230f5f529586c0eb37df4e9b305 Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 28 Feb 2018 22:51:19 +0100 Subject: First draft of BWS sniffing article --- .../2018/02/28/debugging-queries-to-bws.tpl | 129 +++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 template/content/2018/02/28/debugging-queries-to-bws.tpl (limited to 'template') diff --git a/template/content/2018/02/28/debugging-queries-to-bws.tpl b/template/content/2018/02/28/debugging-queries-to-bws.tpl new file mode 100644 index 0000000..9a1ddc6 --- /dev/null +++ b/template/content/2018/02/28/debugging-queries-to-bws.tpl @@ -0,0 +1,129 @@ + + +
+
+

Artykuł stanowi instrukcję konfiguracji narzędzi i plików, które pozwolą na zrzut i analizę zapytań SQL wykonywanych na bazach danych oprogramowania Bridgemate.

+

+ Wymagane oprogramowanie to: +

    +
  • Microsoft Access, kompatybilny z plikami formatu Access2000 (tu użyto Accessa 2013)
  • +
  • serwer SQL Server (tu: SQL Server Express 2014)
  • +
  • SQL Server Import and Export Data (tu: z pakietu wersji 2014)
  • +
  • SQL Server Profiler (tu: w wersji 17)
  • +
+

+

Operacje przedstawione w poniższym opisie prawdopodobnie są wykonalne z dowolnym innym serwerem bazodanowym, ale artykuł opisuje SQL Server ze względu na obecność w systemach Windows gotowych sterowników bazodanowych do SQL Server kompatybilnych z bazami Accessa, oraz dostępność przyjaznych użytkownikowi narzędzi do analizy operacji serwera baz danych.

+
+
+ +
+
+

Zarys koncepcji

+
+
+

+ Po przejrzeniu różnych porad i odpowiedzi znalezionych w Internecie, nie udało mi się skutecznie skorzystać żadnej z metod przeznaczonych dla konkretnych sterowników bazodanowych (Jet/ODBC). +

+

+ Podstawowy pomysł miał więc polegać na przekierowaniu całej komunikacji z plikiem BWS przez pośredniczący serwer bazodanowy, dla którego można zastosować dowolne narzędzia analizy wykonywanych operacji. Pierwotna koncepcja rysowała się więc następująco: +

    +
  1. Utworzyć bazę danych SQL Server w trybie tzw. linked server, mapując całą jej zawartość na oryginalny BWS.
  2. +
  3. Utworzyć pusty plik Accessa 2000 i połączyć w nim tabele z tabelami tak utworzonej bazy danych.
  4. +
  5. Wszelkie programy używające pliku BWS kierować do tego drugiego pliku BWS, zamiast oryginału.
  6. +
+ W ten sposób wszystkie operacje wykonywałyby się na zawartości oryginalnego pliku, ale można by je łatwo przeanalizować podczas przejścia przez serwer bazy danych. +

+

+ Niestety, prawidłowa konfiguracja linked server kierującego do pliku BWS mnie przerosła, procedura została więc zmodyfikowana: +

    +
  1. Zaimportować całą zawartość oryginalnego pliku BWS do bazy danych SQL Server.
  2. +
  3. A dalej zgodnie z planem - utworzyć plik Accessa łączący się do tej bazy danych i korzystaćz niego.
  4. +
+

+

Zaletą tego podejścia jest zachowanie oryginalnej zawartości pliku BWS - więc łatwa powtarzalność testów. Do tego metoda uniezależnia się od wyboru konkretnego serwera bazy danych, choć pozostałem przy SQL Server.

+
+
+ +
+
+

Import zawartości BWS do SQL Server

+
+ +
+ +
+
+

Połączenie nowego pliku Access z bazą SQL Server

+
+
+
    +
  1. Tworzymy nową bazę danych Access dla komputerów stacjonarnych, wybieramy docelowe ścieżkę i format.
  2. +
  3. Wybieramy format Access 2000, zatwierdzamy nazwę pliku (na razie może pozostać *.mdb).
  4. +
  5. Zamykamy domyślną tabelę roboczą, przechodzimy do wstęgi Dane zewnętrzne, wybieramy pozycję Baza danych ODBC.
  6. +
  7. Nie importujemy kopii danych z SQL Server, będziemy tworzyć tabele połączone.
  8. +
  9. W zakładce Komputerowe źródło danych skonfigurujemy źródło danych z naszej bazy SQL Server.
  10. +
  11. Bez uprawnień administracyjnych jesteśmy w stanie zdefiniować źródło jedynie dla aktualnego użytkownika, to wystarczy.
  12. +
  13. Określamy komunikację przy użyciu natywnego sterownika SQL Server.
  14. +
  15. Nadajemy źródłu nazwę i opis, a także kierujemy je do naszej instancji SQL Server.
  16. +
  17. Ustawiamy dane uwierzytelnienia do serwera (jak przy imporcie z oryginalnego BWS).
  18. +
  19. Zmieniamy domyślną bazę danych (Change the default database to:) na naszą kopię oryginalnego pliku BWS.
  20. +
  21. Kończymy kreator z domyślnymi parametrami w ostatniej karcie.
  22. +
  23. Możemy jeszcze przetestować połączenie z naszą bazą, na wypadek gdybyśmy np. określili złą lokalizację serwera i nazwę instancji SQL Server.
  24. +
  25. Wybieramy tak utworzone źródło danych. W przyszłości nie ma potrzeby tworzenia nowego źródła z każdym importem, możemy skierować nasze źródło na inną bazę danych poprzez aplet: Panel Sterowania -> Narzędzia Administracyjne -> Źródła danych (ODBC), przeprowadzając ponowną konfigurację, z wyborem innej domyślnej bazy danych.
  26. +
  27. Wybieramy wszystkie tabele zaimportowane wcześniej z pliku BWS poza Settings.
  28. +
  29. Następnie Access pyta nas o klucze podstawowe wszystkich tabel. Ich ustawienie jest niezbędne do tego, by tak spreparowany plik Access mógł być używany nie tylko w trybie do odczytu, ale i do zapisu. Przeważnie kluczem podstawowym jest kolumna ID...
  30. +
  31. ...poza tabelami HandEvaluation, HandRecord, PlayerNumbers, RoundData i Tables.
  32. +
  33. Zmieniamy nazwy zaimportowany tabel połączonych, usuwając przedrostki wynikające z przestrzeni nazw tabel w bazie danych.
  34. +
  35. Po tej operacji powinniśmy mieć w pliu z powrotem oryginalne nazwy tabel z pliku BWS.
  36. +
  37. Możemy podejrzeć kopie oryginalnych danych, pobranych z SQL Server.
  38. +
  39. Pozostaje skopiować oryginalną tabelę Settings. Tabeli tej nie dało się zaimportować jako połączonej z SQL Server - jedyny klucz podstawowy, jaki może ona posiadać (Section), niekoniecznie znajduje się zawsze w pliku BWS, poza tym zawiera pola typu bit, które kiepsko się mapują między silnikami bazodanowymi. Oznacza to, że nie będziemy w stanie podsłuchać zapytań do tabeli Settings, ale rzadko kiedy są one nietrywialne i jeśli nie zajmujemy się konkretnie zapisem i odczytem ustawień (np. podziałem ustawień między ustawieniami definiowanymi przez BWS a definiwanymi przez BCS), nie będzie nam to potrzebne.
  40. +
  41. We wstędze Dane zewnętrzne wybieramy źródło Access.
  42. +
  43. W oknie wyboru pliku musi ręcznie wymusić wyświetlenie wszystkich plików w katalogu (nasz BWS ma innerozszerzenie niż Access się spodziewa).
  44. +
  45. Wybieramy opcję importu kopii tabeli. Moglibyśmy utworzyć kolejną tabelę połączoną, ale wówczas modyfikowalibyśmy oryginalne dane.
  46. +
  47. Wybieramy tabelę Settings.
  48. +
  49. Kończymy kreator.
  50. +
  51. Mamy teraz gotowy kompletny interfejs identyczny z oryginalnym plikiem BWS (z dokładnością do widoków danych). Możemy zmienić mu rozszerzenie na *.bws.
  52. +
+
+
+ +
+
+

Podsłuch zapytań w akcji

+
+ +
-- cgit v1.2.3