ďťż
 
Blokowanie danych do edycji ďťż
 
Blokowanie danych do edycji
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

Blokowanie danych do edycji



=?ISO-8859-2?Q?Adam_K=B3obukowski?= - 29-12-2005 14:59
Blokowanie danych do edycji
  Witam

Mam nastepujacy problem: jest aplikacja oparta rzecz jasna o DBMS, gdzie
jesli jeden uzytkownik edytuje jakies dane, to jesli inny chcialby
akurat wyedytowac te same dane to dostaje komunikat "Uzytkownik X akurat
edytuje te dane" i musi poczekac. Realizacja tego jest dosc prosta,
realizujemy to poprzez tabele gdzie zapisywane jest co kto akurat
edytuje. Problem jest wowczas gdy komus sie wylaczy komputer - tablica z
blokadami nie zostanie odpowiednio odswiezona, a rekord zostanie
zablokowany "na zawsze".

Jak to lepiej zrealizowac? Takl aby bylo to odporne na tego typu awarie?
Dodam ze uzywamy MSSQL.

--
Semper Fidelis

Adam Klobukowski
atari@gabo.pl





Grzesiek G. - 29-12-2005 14:59

  Adam Kłobukowski napisał(a):
> Witam
>
> Mam nastepujacy problem: jest aplikacja oparta rzecz jasna o DBMS, gdzie
> jesli jeden uzytkownik edytuje jakies dane, to jesli inny chcialby
> akurat wyedytowac te same dane to dostaje komunikat "Uzytkownik X akurat
> edytuje te dane" i musi poczekac. Realizacja tego jest dosc prosta,
> realizujemy to poprzez tabele gdzie zapisywane jest co kto akurat
> edytuje. Problem jest wowczas gdy komus sie wylaczy komputer - tablica z
> blokadami nie zostanie odpowiednio odswiezona, a rekord zostanie
> zablokowany "na zawsze".
>
> Jak to lepiej zrealizowac? Takl aby bylo to odporne na tego typu awarie?
> Dodam ze uzywamy MSSQL.
>
Aplikacja powinna aktualizować co jakiś czas (nazwijmy go X), że nadal
blokuje jakiś rekord. Dodatkowo powinien być proces usuwający blokady
nie aktualizowane przez X czasu.

Pozdrawiam

--
Grzegorz Gruza
Odpowiadając usuń "spamerom_nie." z adresu!!!




szaman - 31-12-2005 11:08

 
>realizujemy to poprzez tabele gdzie zapisywane jest co kto akurat
>edytuje. Problem jest wowczas gdy komus sie wylaczy komputer - tablica z
>blokadami nie zostanie odpowiednio odswiezona, a rekord zostanie
>zablokowany "na zawsze".
>
>Jak to lepiej zrealizowac? Takl aby bylo to odporne na tego typu awarie?
np. zapisać czas blokowania i stosować jakiś czas przedawnienia.

Czy na pewno nie możesz zastosować jakiegoś z wariantów blokowania
optymistycznego?

--
{67B14976-ABB4-4A3B-869B-84B5CCA1F569}




Zenon Karol Bednarz - 31-12-2005 11:08

  Adam Kłobukowski wrote:

> Witam
>
> Mam nastepujacy problem: jest aplikacja oparta rzecz jasna o DBMS, gdzie
> jesli jeden uzytkownik edytuje jakies dane, to jesli inny chcialby
> akurat wyedytowac te same dane to dostaje komunikat "Uzytkownik X akurat
> edytuje te dane" i musi poczekac. Realizacja tego jest dosc prosta,
> realizujemy to poprzez tabele gdzie zapisywane jest co kto akurat
> edytuje. Problem jest wowczas gdy komus sie wylaczy komputer - tablica z
> blokadami nie zostanie odpowiednio odswiezona, a rekord zostanie
> zablokowany "na zawsze".
>
> Jak to lepiej zrealizowac? Takl aby bylo to odporne na tego typu awarie?
> Dodam ze uzywamy MSSQL.
>
Używałem do blokowania danych globalnych tablic tymczsowych.
Jeżeli edytowałem jakiś dokument to tworzyłem dynamicznie globalną tablicę
tymczsową o nazwie pochodzącej z dokumentu tam wstawiałem jeden wiersz z
opisem dla innych użytkowników.Po zwolnieniu dokumentu kasowałem tablicę
tymczasową.
Jeżeli ktoś inny chciał edytować dokument to procedura sprawdzła czy
istnieje tablica tymczsowa o określonej nazwie.Jeżeli tak to komunikat
odczytany z tej tablicy.
Zaletą tej metody jest to że jeżeli komus sie wylaczy komputer lub utraci
połączenie z serwerem to MSSQL automatycznie sam skasuje taką tabelę która
utraciła właściciela.
Nie ma więc problemu z pozostawianymi blokadami.

Zenon Karol





Krzysztof Raczkowski - 31-12-2005 11:08

  Zenon Karol Bednarz wrote:
>
>
> Używałem do blokowania danych globalnych tablic tymczsowych.
> Jeżeli edytowałem jakiś dokument to tworzyłem dynamicznie globalną tablicę
> tymczsową o nazwie pochodzącej z dokumentu tam wstawiałem jeden wiersz z
> opisem dla innych użytkowników.Po zwolnieniu dokumentu kasowałem tablicę
> tymczasową.
> Jeżeli ktoś inny chciał edytować dokument to procedura sprawdzła czy
> istnieje tablica tymczsowa o określonej nazwie.Jeżeli tak to komunikat
> odczytany z tej tablicy.
> Zaletą tej metody jest to że jeżeli komus sie wylaczy komputer lub utraci
> połączenie z serwerem to MSSQL automatycznie sam skasuje taką tabelę która
> utraciła właściciela.
> Nie ma więc problemu z pozostawianymi blokadami.

To chyba lepsze od sp_getapplock - ten sposób teoretycznie zapewnia
sprzątanie po sobie, ale czasem trwa to długo ... Czy wiesz może czy
tablice tymczasowe mogą być usunięte z innej sesji ??

--
Pozdrawiam
Krzysztof Raczkowski




Zenon Karol Bednarz - 31-12-2005 11:08

  Krzysztof Raczkowski wrote:

> Zenon Karol Bednarz wrote:
>>
>>
>> Używałem do blokowania danych globalnych tablic tymczsowych.
>> Jeżeli edytowałem jakiś dokument to tworzyłem dynamicznie globalną
>> tablicę tymczsową o nazwie pochodzącej z dokumentu tam wstawiałem jeden
>> wiersz z opisem dla innych użytkowników.Po zwolnieniu dokumentu kasowałem
>> tablicę tymczasową.
>> Jeżeli ktoś inny chciał edytować dokument to procedura sprawdzła czy
>> istnieje tablica tymczsowa o określonej nazwie.Jeżeli tak to komunikat
>> odczytany z tej tablicy.
>> Zaletą tej metody jest to że jeżeli komus sie wylaczy komputer lub utraci
>> połączenie z serwerem to MSSQL automatycznie sam skasuje taką tabelę
>> która utraciła właściciela.
>> Nie ma więc problemu z pozostawianymi blokadami.
>
> To chyba lepsze od sp_getapplock - ten sposób teoretycznie zapewnia
> sprzątanie po sobie, ale czasem trwa to długo ... Czy wiesz może czy
> tablice tymczasowe mogą być usunięte z innej sesji ??
>

Globalne tablice tymczasowe widoczne są przez wszystkich użytkowników w
danej bazie.
Ale czy mogą być kasowane nie pamiętam jako że dosyć dawno temu porzuciłem w
swoich aplikacjach MSSQL na rzecz POSTGRESA.
Najlepiej poprostu sprawdzić samemu.

Zenon Karol




Artur S. - 05-01-2006 08:04

  Adam Kłobukowski napisał(a):
> Witam
>
> Mam nastepujacy problem: jest aplikacja oparta rzecz jasna o DBMS, gdzie
> jesli jeden uzytkownik edytuje jakies dane, to jesli inny chcialby
> akurat wyedytowac te same dane to dostaje komunikat "Uzytkownik X akurat
> edytuje te dane" i musi poczekac. Realizacja tego jest dosc prosta,
> realizujemy to poprzez tabele gdzie zapisywane jest co kto akurat
> edytuje. Problem jest wowczas gdy komus sie wylaczy komputer - tablica z
> blokadami nie zostanie odpowiednio odswiezona, a rekord zostanie
> zablokowany "na zawsze".
>
> Jak to lepiej zrealizowac? Takl aby bylo to odporne na tego typu awarie?
> Dodam ze uzywamy MSSQL.
>
Pod rozwagę:
Wpisy do tabeli BLOKADY, na osobnym connection z transakcją, która
zawsze kończy się rollback (po zwolnieniu zasobu). A jakie zasoby są
blokowane, to trzeba użyć select z with (nolock). Tabela powinna być w
osobnej bazie z powodu wiszących długich transakcji.

Pozdrawiam
Artur S.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= =?iso-8859-2?Q?=5BMySQL=5D_Wy=B6wietlenie_wszystkich_rekordow _zawierajacy?==?iso-8859-2?Q?ch_duplikat_a__moze_inna_struktura_bazy_danych ?= Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8 [laik]Jak =?ISO-8859-2?Q?stworzy=E6/zaczac_tworzyc__ma=B3=B1?==?ISO-8859-2?Q?__baz=EA_danych_na_potrzeby_www=3F?= [mysql] przenoszenie danych =?ISO-8859-2?Q?mi=EAdzy_tabelami_?==?ISO-8859-2?Q?w_r=F3=BFnych_bazach?= Ksiazka - "Podstawowy =?ISO-8859-2?Q?wyk=B3ad_z_system=F3w_?==?ISO-8859-2?Q?baz_danych=22?= Zrywanie =?ISO-8859-2?Q?po=B3aczen_z_baza_danych_-_pos?==?ISO-8859-2?Q?tgresql_=3C-=3E_odbc?= Połączenie bazy danych z wykonaniem polaczenia telefonicznego [mssql] insert do tabeli na podstawie danych z innej tabeli [oracle] Baza danych do kursy Introduction to Oracle9i:PL/SQL ? Skąd ją pobrać ?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • bajkomoda.xlx.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