ďťż
 
MSSQL: =?iso-8859-2?Q?por=F3wnanie_dw=F3ch?= wierszy? ďťż
 
MSSQL: =?iso-8859-2?Q?por=F3wnanie_dw=F3ch?= wierszy?
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

MSSQL: =?iso-8859-2?Q?por=F3wnanie_dw=F3ch?= wierszy?



Jacek Osiecki - 12-07-2007 00:09
MSSQL: =?iso-8859-2?Q?por=F3wnanie_dw=F3ch?= wierszy?
  Witam,

Potrzebuję stworzyć coś, co loguje zmiany dokonane w wybranych tabelach.
Np. mam tabelę klienci, i gdy zmienię pole "Nazwisko" z "Nowak" na "Kowal",
więc w logu zapisuję "Klienci(ID:xxx): Nazwisko: Nowak=>Kowal".

Od której strony właściwie podejść do tego tematu, żeby nie trzeba było
robić taaakich funkcji które w dodatku będę musiał rozbudowywać po dodaniu
jakiegoś pola w nadzorowanej tabeli?

Pozdrawiam,
--
Jacek Osiecki joshua@ceti.pl GG:3828944
"To nie logika, to polityka"
(c) Kabaret pod Wydrwigroszem 2006





Marcin A. Guzowski - 13-07-2007 00:01

  Jacek Osiecki wrote:
> Witam,
>
> Potrzebuję stworzyć coś, co loguje zmiany dokonane w wybranych tabelach.
> Np. mam tabelę klienci, i gdy zmienię pole "Nazwisko" z "Nowak" na "Kowal",
> więc w logu zapisuję "Klienci(ID:xxx): Nazwisko: Nowak=>Kowal".

Poczekaj do final release'a SQL Server 2008, ew. zainstaluj sobie wersję
CTP :) Tam będziesz miał natywny mechanizm do takich zadań - Change Data
Capture:

http://www.microsoft.com/poland/tech...68_01.mspx#ESE

> Od której strony właściwie podejść do tego tematu, żeby nie trzeba było
> robić taaakich funkcji które w dodatku będę musiał rozbudowywać po dodaniu
> jakiegoś pola w nadzorowanej tabeli?

Póki co, temat sprowadza się do stworzenia tabeli zmian i napisania
odpowiedniego triggera na tabeli bazowej. Na Twoim miejscu nie
zakładałbym, że uda Ci się zrobić super-uniwersalny trigger
automatycznie obsługujący sytuację pojawienia się nowej kolumny itd.
Nawet w CDC dodanie nowej kolumny będzie wymagało odpowiednich działań
rekonfiguracyjnych. Oczywiście pewnie dałoby się wszystko
zautomatyzować, ale ze względu na wydajność, bezpieczeństwo i
przejrzystość rozwiązania - gra nie jest warta przysłowiowej świeczki.

Zbuduj sobie raczej coś na wzór Change Data Capture. W tabeli zmian
powinny pojawić się kolumny w stylu: id_zmiany (PK), typ_operacji (np.
zmiana, usunięcie), FK_id_klient (referencja do klucza
głównego/kandydującego tabeli bazowej) + kolumny odpowiadające
strukturze tabeli bazowej, które mają być objęte historią zmian. Trigger
powinien reagować na określone operacje DML i wrzucać do tabeli zmian
odpowiednie dane (np. wartości kolumn sprzed zmiany czy usunięcia
rekordu). Możesz też sobie stworzyć jakiś interfejs (widok/procedury) do
prezentowania informacji z tabeli zmian w bardziej intuicyjny sposób lub
np. do raportowania o częstości zmian poszczególnych klientów.

--
Pozdrawiam,
Marcin Guzowski
http://guzowski.info




wloochacz - 18-07-2007 00:06

  >> Potrzebuję stworzyć coś, co loguje zmiany dokonane w wybranych tabelach.
>> Np. mam tabelę klienci, i gdy zmienię pole "Nazwisko" z "Nowak" na
>> "Kowal",
>> więc w logu zapisuję "Klienci(ID:xxx): Nazwisko: Nowak=>Kowal".
>
> Poczekaj do final release'a SQL Server 2008, ew. zainstaluj sobie wersję
> CTP :) Tam będziesz miał natywny mechanizm do takich zadań - Change Data
> Capture:
>
> http://www.microsoft.com/poland/tech...68_01.mspx#ESE
Łeeee... sam se napisałem i nawet działa :)
Dla dowolnej tabeli, dowolna liczba atrybutów dowolnie dodawana
on-the-fly :D
Tak wygląda GUI do zarzadzanie procesem logowania zmian:
http://www.dgbit.pl/files/DexterDBLogger.jpg

--
wloochacz




Marcin A. Guzowski - 18-07-2007 00:06

  wloochacz wrote:
>> Poczekaj do final release'a SQL Server 2008, ew. zainstaluj sobie
>> wersję CTP :) Tam będziesz miał natywny mechanizm do takich zadań -
>> Change Data Capture:
>>
>> http://www.microsoft.com/poland/tech...68_01.mspx#ESE
> Łeeee... sam se napisałem i nawet działa :)
> Dla dowolnej tabeli, dowolna liczba atrybutów dowolnie dodawana
> on-the-fly :D
> Tak wygląda GUI do zarzadzanie procesem logowania zmian:
> http://www.dgbit.pl/files/DexterDBLogger.jpg

Ciekawe, nawet ładnie wygląda ;) Ale z punktu widzenia innego niż GUI,
czyli obsługi w BD - wydajnościowo na pewno nie przebijesz natywnego
mechanizmu (CDC), który jest podpięty bezpośrednio pod log transakcyjny,
podczas gdy Ty musisz wykorzystywać triggery ze wszystkimi tego
konsekwencjami. Obecnie nie ma oczywiście innego wyjścia.

--
Pozdrawiam,
Marcin Guzowski
http://guzowski.info





wloochacz - 19-07-2007 00:06

  [ciach]
> Ciekawe, nawet ładnie wygląda ;)
Cieszę się, że się podoba :)
U mnie wszystko ładnie wygląda, jak powiedział Bill "jeśli nie możesz
zrobić czegoś dobrze, zrób chociaż ładnie" :D

> Ale z punktu widzenia innego niż GUI,
> czyli obsługi w BD - wydajnościowo na pewno nie przebijesz natywnego
> mechanizmu (CDC), który jest podpięty bezpośrednio pod log transakcyjny,
> podczas gdy Ty musisz wykorzystywać triggery ze wszystkimi tego
> konsekwencjami. Obecnie nie ma oczywiście innego wyjścia.
No oczywiście, że tak.
Mnie to było po prostu potrzebne do audytu zmian w pewnych
newralgicznych częściach bazy danych (konkretne pola w konkretnych
tabelach). I zależało mi na narzędziu, które mogę szybko i łatwo
wyklikać a także wygodnie przeglądać log.
Muszę przyznać, że założenia zostały spełnione w 100%

Przeglądarka:
http://www.dgbit.pl/files/DCCViewer.jpg

Oczywiście nie zdawałem sobie sprawy z CDC i dzięki za info :)
--
wloochacz




Marcin A. Guzowski - 19-07-2007 00:06

  wloochacz wrote:
> Przeglądarka:
> http://www.dgbit.pl/files/DCCViewer.jpg
>
> Oczywiście nie zdawałem sobie sprawy z CDC i dzięki za info :)

IMHO Twoją aplikację można spokojnie przystosować do współpracy z CDC.
GUI się przecież nie zmieni, nauczysz ją tylko współpracować z
procedurami konfiguracyjnymi CDC.

--
Pozdrawiam,
Marcin Guzowski
http://guzowski.info




=?ISO-8859-2?Q?Artur_Muszy=F1ski?= - 20-07-2007 00:03

  wloochacz pisze:
> [ciach]
>> Ciekawe, nawet ładnie wygląda ;)
> Cieszę się, że się podoba :)
> U mnie wszystko ładnie wygląda, jak powiedział Bill "jeśli nie możesz
> zrobić czegoś dobrze, zrób chociaż ładnie" :D

Tak na oko to jest to nie tylko ładne, ale i funkcjonalne. Podziwiam
programistów, którzy są w stanie tyle wysiłku włożyć w pomocnicze w
końcu narzędzie. Chyba, że to sprzedajecie?

artur




wloochacz - 24-07-2007 00:12

  [ciach]
> Tak na oko to jest to nie tylko ładne, ale i funkcjonalne. Podziwiam
> programistów, którzy są w stanie tyle wysiłku włożyć w pomocnicze w
> końcu narzędzie. Chyba, że to sprzedajecie?
Nieee... nie sprzedajmy, na razie :D
Oprócz programowania zajmuję się także administratorką systemem ERP i
czasem takie właśnie narzędzi jest warte naprawdę sporo :-)
Może gdyby znaleźli się chętni do testowania, to kto wie...
Poza tym to działa tylko z MSSQL, ale nie problem zrobić obsługę innych
baz (Oracle na ten przykład).

--
wloochacz
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO Czy zna (obsługuje) ktoś program Iso Draw ? MYSQL - kodowanie w ISO-PL strona plus baza w iso do utf-8 Kodowanie: z iso na utf MSSQL Express czy Oracle Express Pobierananie danych z innej bazy danych w MSSQL Migracja MSSQL 2005 CTP na 2005 Express MSSQL , funkcja pobierajaca sama date (bez czasu) w funkcji [mssql] insert do tabeli na podstawie danych z innej tabeli
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • melooonka.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com