Discussion:
skasowałem rekordy w tabeli
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
bory
2007-06-08 19:35:59 UTC
Permalink
Jak odzyskać skasowane rekordy w tabeli?
Tabela zamknięta, baza cały czas otwarta.
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Karol MARCHEWKA
2007-06-08 19:45:23 UTC
Permalink
Post by bory
Jak odzyskać skasowane rekordy w tabeli?
Tabela zamknięta, baza cały czas otwarta.
Z kopii zapasowej ??? :-(

A potem odznacz Narzędzia / Opcje / Edytowanie-znajdowanie / Zmiany rekordu
--
Pozdrawiam
Karol MARCHEWKA

www.marchewka.za.pl
bory
2007-06-08 19:58:06 UTC
Permalink
Post by Karol MARCHEWKA
Post by bory
Jak odzyskać skasowane rekordy w tabeli?
Tabela zamknięta, baza cały czas otwarta.
Z kopii zapasowej ??? :-(
A potem odznacz Narzędzia / Opcje / Edytowanie-znajdowanie / Zmiany rekordu
--
Pozdrawiam
Karol MARCHEWKA
www.marchewka.za.pl
Cenię poczucie humoru, ale dzisiaj jakby mniej.
Miłego wieczoru.
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
==PiNo==
2007-06-08 20:20:00 UTC
Permalink
U?ytkownik "bory" <***@wp.pl> napisa? w wiadomo?ci news:***@newsgate.onet.pl...
| Jak odzyskać skasowane rekordy w tabeli?
| Tabela zamknięta, baza cały czas otwarta.
|

Nie pocieszę Cie niestety - na 99% nie do odzyskania w "normalnie klikalny"
sposób, a inaczej to nie wiem :(
--
==PiNo==
b***@wp.pl
2007-06-08 20:42:05 UTC
Permalink
Post by ==PiNo==
| Jak odzyskać skasowane rekordy w tabeli?
| Tabela zamknięta, baza cały czas otwarta.
|
Nie pocieszę Cie niestety - na 99% nie do odzyskania w "normalnie klikalny"
sposób, a inaczej to nie wiem :(
--
==PiNo==
Dziekuję za zrozumienie. Nie liczę na cuda, zależy mi ma upewnieniu się co to
możliwości naprawy błędu (każdemu przepracowanemu może się przecież zdarzyć).
Odzyskanie z kopii nie jest problemem (różnica 4 godzin od ostatniej kopii to
99,99% odzysku - ale nie 100%).
Świadomość możliwości naprawienia błędu to jak poduszki powietrzne w aucie -
pewniej się jedzie mając dodatkową asekurację.
Pozdrowienia
bory
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Krzysztof Naworyta
2007-06-10 00:38:24 UTC
Permalink
Juzer bory <***@wp.pl> napisał

| Jak odzyskać skasowane rekordy w tabeli?
| Tabela zamknięta, baza cały czas otwarta.

Da się!

Najprościej: użyj przycisku "cofnij" :)
Jeśli juz nieaktywny, to preglądnij MSysObjects w poszukiwaniu obiektu
nazwanego "~tmp..."
Prawdopodobnie to właśnie Twoja tabela. Następnie trzeba programowo
skopiować jej strukturę do nowej tabeli i przepisać do niej wsystkie
rekordy.

Gdzieś w necie jest kawałek kodu, który to robi.
--
KN
(MVP, M$ Office Access)

archiwum grupy:
http://groups.google.pl/advanced_group_search
(grupa: pl*msaccess)
Krzysztof Pozorek
2007-06-10 13:15:22 UTC
Permalink
(...)
Post by Krzysztof Naworyta
Najprościej: użyj przycisku "cofnij" :)
Tak, to zdecydowanie zalecany sposob :-)
Post by Krzysztof Naworyta
Jeśli juz nieaktywny, to preglądnij MSysObjects w poszukiwaniu obiektu
nazwanego "~tmp..."
Prawdopodobnie to właśnie Twoja tabela. Następnie trzeba programowo
skopiować jej strukturę do nowej tabeli i przepisać do niej wsystkie
rekordy.
Gdzieś w necie jest kawałek kodu, który to robi.
Tak, to bardzo prosty sposob, ktory odzyskuje cala tabele. Nalezy jednak
pamietac, ze tabele ~tmp znikaja razem z zamknieciem bazy :-( Po ponownym
otwarciu pliku juz ich nie ma.

W niniejszym watku sytuacja jest jednak trudniejsza, bo nie tabela zostala
usunieta, ale rekordy z tej tabeli. Wtedy systemowe tabele ~tmp w ogole nie
sa tworzone.

Niestety aby odzyskac usuniete rekordy nalezy sie skontaktowac z jakas firma
(raczej zagraniczna), ktora spocjalizuje sie w odzyskiwaniu takich danych.
Nie mam pod reka linku (musisz pogooglac), ale sa takie serwisy. Kiedys
nawet czytalem jedna z takich ofert, ale niestety w przypadku usuniecia
czesci rekordow z tabeli nie_gwaratowali_odzyskania wszystkich danych. 100%
danych umieli odzyskac w przypadku, jesli usunieta zostala cala tabela.

Moje wlasne proby odzyskiwania usunietych rekordow doprowadzily mne do
wniosku, ze w tym przypadku Access niestety nie markuje tylko usunietych
rekordow (jakby sie wydawalo, skoro rozmiar bazy sie nie zmiejsza), ale
naprawde je czesciowo usuwa w dosc, jak dla mnie przypadkowy sposob, zalezny
od ukladu danych w bloku 4kb.

Przykro mi, ale to nie sa najlepsze dla Ciebie wiesci :-( Nawet jesli nie
zamknales jeszcze bazy, to ~tmp masz tylko dla tabel, ktore usunales w
calosci.

K.P.
bory
2007-06-10 16:49:38 UTC
Permalink
Post by Krzysztof Pozorek
(...)
Post by Krzysztof Naworyta
Najprościej: użyj przycisku "cofnij" :)
Tak, to zdecydowanie zalecany sposob :-)
Post by Krzysztof Naworyta
Jeśli juz nieaktywny, to preglądnij MSysObjects w poszukiwaniu obiektu
nazwanego "~tmp..."
Prawdopodobnie to właśnie Twoja tabela. Następnie trzeba programowo
skopiować jej strukturę do nowej tabeli i przepisać do niej wsystkie
rekordy.
Gdzieś w necie jest kawałek kodu, który to robi.
Tak, to bardzo prosty sposob, ktory odzyskuje cala tabele. Nalezy jednak
pamietac, ze tabele ~tmp znikaja razem z zamknieciem bazy :-( Po ponownym
otwarciu pliku juz ich nie ma.
W niniejszym watku sytuacja jest jednak trudniejsza, bo nie tabela zostala
usunieta, ale rekordy z tej tabeli. Wtedy systemowe tabele  ~tmp w ogole nie
sa tworzone.
Niestety aby odzyskac usuniete rekordy nalezy sie skontaktowac z jakas firma
(raczej zagraniczna), ktora spocjalizuje sie w odzyskiwaniu takich danych.
Nie mam pod reka linku (musisz pogooglac), ale sa takie serwisy. Kiedys
nawet czytalem jedna z takich ofert, ale niestety w przypadku usuniecia
czesci rekordow z tabeli nie_gwaratowali_odzyskania wszystkich danych. 100%
danych umieli odzyskac w przypadku, jesli usunieta zostala cala tabela.
Moje wlasne proby odzyskiwania usunietych rekordow doprowadzily mne do
wniosku, ze w tym przypadku Access niestety nie markuje tylko usunietych
rekordow (jakby sie wydawalo, skoro rozmiar bazy sie nie zmiejsza), ale
naprawde je czesciowo usuwa w dosc, jak dla mnie przypadkowy sposob, zalezny
od ukladu danych w bloku 4kb.
Przykro mi, ale to nie sa najlepsze dla Ciebie wiesci :-( Nawet jesli nie
zamknales jeszcze bazy, to ~tmp masz tylko dla tabel, ktore usunales w
calosci.
K.P.
Dziękuję Panowie!
Często robię kopie, więc straty minimalne i bardziej zależało mi na upewnieniu
się że się nie da.
Zamiast guglać od razu za kopię &#8230;

Mój stan wiedzy w tej kwestii:
Access zapisuje typowo 20 - 30 rekordów na stronie (data page).
Przyjmijmy dla prostoty liczenia:
25 rekordów na każdej stronie, tabela ma powiedzmy 100.000 rekordów wiec cała
tabela jest zapisana na 4.000 stronach.
Gdy usuniemy WSZYSTKIE rekordy to access robi tak:
Kopiuje pierwszy wywalony rekord na pozostałe rekordy na danej stronie.
Gdy wyślemy bazę to specjalistów odzyskiwania danych to mogą odzyskać tylko
4000 rekordów (po jednym z każdej strony), reszta czyli 96.000 to kopie tych
4.000 pierwszych rekordów.

Podsumowując:
Po skasowaniu WSZYSTKICH rekordów z tabeli możemy odzyskać co 4000czny rekord!
Po skasowaniu tabeli z rekordami możemy odzyskać całą tabelę ze wszyskimi
rekordami (warunek nie zamknięta baza po usunięciu).
Po zmianie w rekordzie (ale nie usunięcie rekordu) można COFNIJ .
Po zmianie w drugim rekordzie COFNIJ dotyczy tylko zmian w ostatnim rekordzie
(poprzednie rekordy NIE).

Nie daje mi jednak spać jedno!
Przy usuwaniu niewielu rekordów z tabeli Access nie czyni problemów.
Ale gdy usuwamy dużo rekordów zgłasza komunikat &#8222;że tego nie da się cofnąć!&#8221;
Zatem ile usuwanych rekordów można przywrócić i JAK, bo w moim A2K nie
natknąłem się na punkt zaczepienia.

Pozdrawiam
bory
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Krzysztof Naworyta
2007-06-10 17:23:26 UTC
Permalink
Juzer bory <***@wp.pl> napisał


(...)
| Mój stan wiedzy w tej kwestii:
| Access zapisuje typowo 20 - 30 rekordów na stronie (data page).

no, to jest raczej Twoja "średnia" ;-)
Wystarczy, że w tabeli mam 8 pól tekstowych długości 255 znaków i jeśli
mocno wypełnione, to mam 1 rekord na stronie!
Zresztą to taki właśnie sposób na zapewnienie blokowania "na poziomie
rekordu" w Jet'ach wersji niższej niż 4.0.

| Przyjmijmy dla prostoty liczenia:
| 25 rekordów na każdej stronie, tabela ma powiedzmy 100.000 rekordów
| wiec cała tabela jest zapisana na 4.000 stronach.
| Gdy usuniemy WSZYSTKIE rekordy to access robi tak:
| Kopiuje pierwszy wywalony rekord na pozostałe rekordy na danej stronie.
| Gdy wyślemy bazę to specjalistów odzyskiwania danych to mogą odzyskać
| tylko 4000 rekordów (po jednym z każdej strony), reszta czyli 96.000 to
| kopie tych 4.000 pierwszych rekordów.

| Podsumowując:
| Po skasowaniu WSZYSTKICH rekordów z tabeli możemy odzyskać co 4000czny
| rekord!

raczej co 25-ty ;-)

| Nie daje mi jednak spać jedno!
| Przy usuwaniu niewielu rekordów z tabeli Access nie czyni problemów.
| Ale gdy usuwamy dużo rekordów zgłasza komunikat &#8222;że tego nie da
| się cofnąć!&#8221; Zatem ile usuwanych rekordów można przywrócić i JAK,
| bo w moim A2K nie natknąłem się na punkt zaczepienia.

Access taką operację wkłada w transakcję.
Ma Cię przecież poinformować, że chcesz usunąć 100 000 rekordów a potem,
że np. 20 000 spośród nich nie można usunąć, ze względu na naruszenie
więzów integralności ...

Czyli wszystkie te rekordy (ewentualnie jakieś dodatkowe informacje (?))
ładuje do RAM'u i tylko od jego aktualnie dostępnej wielkości zależy czy
Jet użyje transakcji (czyli ewent. pozwoli wycofać się z decyzji) czy nie.
--
KN
(MVP, M$ Office Access)

archiwum grupy:
http://groups.google.pl/advanced_group_search
(grupa: pl*msaccess)
bory
2007-06-10 19:03:17 UTC
Permalink
Coś musi być na rzeczy skoro temat zainteresował takich tuzów jak KN i KP.
Banalne skasowanie rekordów "z palca" w "gołej" tabeli okazuje się pułapką bez
wyjścia dla tych, którzy zbytnio przyzwyczają się do wszędobylskiej możliwości
prostego COFNIJ. To usypia czujność.
W takich wypadkach ciągle jedynym COFNIJ jest kopia bezpieczeństwa.
Post by Krzysztof Naworyta
Czyli wszystkie te rekordy (ewentualnie jakieś dodatkowe informacje (?))
ładuje do RAM'u i tylko od jego aktualnie dostępnej wielkości zależy czy
Jet użyje transakcji (czyli ewent. pozwoli wycofać się z decyzji) czy nie.
nie daje użytkownikom accessa narzędzia czy nawet wskazówki jak odzyskać
skasowane rekordy.
Taki urok accessa i kochajmy jak żony!
Pozdrowienia
bory
"Nic nie jest tak proste jak się wydaje"
"Jeżeli coś może iść nie tak to idzie"
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Krzysztof Naworyta
2007-06-11 08:00:23 UTC
Permalink
bory <***@wp.pl> napisał:

| Coś musi być na rzeczy skoro temat zainteresował takich tuzów jak KN
| i KP.

e, interesuje jak wiele innych rzeczy, nad którymi się nie
zastanawiałem, póki ktoś o to nie zapytał ;-)

W końcu access daje mozliwość potwierdzenia usuwania, prawda ?
Więc w jakiś sposób chroni przed nieopatrznym naciśnięciem delete czy
jakimś hazardem myszki w sąsiedztwie telefonu ;-)

| Banalne skasowanie rekordów "z palca" w "gołej" tabeli okazuje
| się pułapką bez wyjścia dla tych, którzy zbytnio przyzwyczają się do
| wszędobylskiej możliwości prostego COFNIJ. To usypia czujność.

Jeśli chodzi o "cofnij", to mówiłem o nim tylko w kontekście skasowania
tabeli jako obiektu.
Fakt, że nie doczytałem całego wątku, stąd ta sugestia.

|| Czyli wszystkie te rekordy (ewentualnie jakieś dodatkowe informacje
|| (?)) ładuje do RAM'u i tylko od jego aktualnie dostępnej wielkości
|| zależy czy Jet użyje transakcji (czyli ewent. pozwoli wycofać się z
|| decyzji) czy nie.

| nie daje użytkownikom accessa narzędzia czy nawet wskazówki jak
| odzyskać skasowane rekordy.

Nie, transakcja jest po to, by Cię poinformować, że chcesz skasować tyle
a tyle, ewent., że nie wszystko uda się skasować - co pozwala ewent.
wycofać się z decyzji o usunięciu, ale jeszcze przed faktycznym
usunięciem.

Jak już potwierdziłeś, to "umarł w butach".

| Taki urok accessa i kochajmy jak żony!

Ano taki urok.
Ale IMO ma to związek z wielodostępem do bazy, co wraz z integralnością
raczej nie pozwala na zaimplementowanie jakiegoś "cofnij", znanego z
excel'a ;-)

--
KN

Loading...