Radomił Ząbik 306 Napisano 7 Listopada 2019 Udostępnij Napisano 7 Listopada 2019 w Pobranie z Śladu rewizyjnego, szczegółowych danych przez SQL Próbuję rozgryźć strukturę tabeli danych Śladu rewizyjnego, celem kontroli zmian w rachunkach bankowych klientów, w sumie w związku z tym postem: Przeanalizowałem dokumentację i moduły śladu rewizyjnego, ale niestety utknąłem w martwym punkcie. Chciałbym wyciągnąć wszystkie zdarzenia dotyczące modyfikacji rachunku klienta, jak np. to: Rozpocząłem analizowanie waszej struktury danych, znalazłem Sobie zapis z powyższego zrzutu danych, do analizy, ale niestety nie jestem w stanie w SQLu dotrzeć do danych, z grupy Zmiany - podejrzewałem dane z DaneTechniczneZdarzenSladuRewizyjnego mogą to być, ale te są skompresowane i w SQLu nie mogę się do nich dostać. Już nawet próbowałem użyć funkcji DECOMPRESS, która w dokumentacji serwera SQL istnieje, ale już w samym serwerze nie działa SELECT zds.Id [Id], zds.Data [Data zdarzenia], CAST(DECOMPRESS(dtzsr.DaneSkompresowane) AS NVARCHAR(MAX)) [Info] FROM ModelDanychContainer.ZdarzeniaSladuRewizyjnego AS zds INNER JOIN ModelDanychContainer.DaneTechniczneZdarzenSladuRewizyjnego AS dtzsr ON dtzsr.Id=zds.DaneTechniczneId WHERE zds.Id = 305580 Link to postu
Wojciech Urbanowski 51 Napisano 8 Listopada 2019 Udostępnij Napisano 8 Listopada 2019 w Pobranie z Śladu rewizyjnego, szczegółowych danych przez SQL (edytowane) Szedł Pan właściwym tropem. Już tłumaczę ścianę z którą Pan się zderzył: Ze względu na ilość danych w "Szczegółach" zdecydowaliśmy ich nie trzymać w formie tabel SQL lecz skompresowanych danych binarnych. Kompresowane są one po stronie aplikacji (nie serwera SQL) ze względu na to, że mamy w ten sposób kontrolę nad algorytmem kompresji (możemy użyć tego, który w danej sytuacji daje najlepszy stopień kompresji). Kod jakim nexo odczytuje szczegóły ze zdarzenia (z encji ZdarzenieSladuRewizyjnego) wygląda następująco (2 metody statyczne: pierwsza rozpakowuje do postaci stringa z JSON-em, który jest deserializowany do postaci obiektów za pomocą drugiej metody): public static string RozpakujDaneTechniczne(this ZdarzenieSladuRewizyjnego zdarzenie) { var daneTechniczne = zdarzenie.DaneTechniczne; if (daneTechniczne != null) { if (!string.IsNullOrEmpty(daneTechniczne.Dane)) { return daneTechniczne.Dane; } else if (daneTechniczne.DaneSkompresowane != null && daneTechniczne.DaneSkompresowane.Length > 0) { var trybKompresji = (KompresjaISzyfrowanie.MetodaKompresji)daneTechniczne.DaneSkompresowane[0]; var daneDoDekompresji = daneTechniczne.DaneSkompresowane.Skip(1).ToArray(); return KompresjaISzyfrowanie.DecompressStringFromBytes(daneDoDekompresji, trybKompresji); } } return null; } public static SzczegolyZdarzenia DeserializujDaneTechniczne(string daneTechniczne) { return daneTechniczne != null ? JsonConvert.DeserializeObject<SzczegolyZdarzenia>(daneTechniczne) : null; } } Zatem, aby znaleźć wszystkie zdarzenia, które modyfikują dane pole, należy przeiterować po stronie aplikacji .NET (nie musi być to Sfera, bo ww. metody korzystają wyłącznie ze statycznych typów z DLL-ek nexo) po wszystkich zdarzeniach, rozpakować, zdeserializować szczegóły i sprawdzić w nich czy było zmieniane jakieś pole. Edytowane 8 Listopada 2019 przez Wojciech Urbanowski Link to postu
Radomił Ząbik 306 Napisano 8 Listopada 2019 Autor Udostępnij Napisano 8 Listopada 2019 w Pobranie z Śladu rewizyjnego, szczegółowych danych przez SQL (edytowane) Auć. No to nie będzie to zbyt łatwe z zewnątrz i wydajne. No nic, to próbuję się dalej do tego dobrać. Dobra, to skąd bierzecie KompresjaISzyforwanie - nie znajduje mi tego w dokumentacji Edytowane 8 Listopada 2019 przez Radomił Ząbik Link to postu
Wojciech Urbanowski 51 Napisano 26 Marca 2020 Udostępnij Napisano 26 Marca 2020 w Pobranie z Śladu rewizyjnego, szczegółowych danych przez SQL Dnia 8.11.2019 o 08:41, Radomił Ząbik napisał: Dobra, to skąd bierzecie KompresjaISzyforwanie - nie znajduje mi tego w dokumentacji Przepraszam za zwłokę w odpowiedzi - umknęło mi powiadomienie. namespace: InsERT.Moria.Narzedzia.DokumentyDoKsiegowaniaassembly: InsERT.Moria.Narzedzia.dll Link to postu
Polecane posty