Tomasz Frydryk

Tomasz Frydryk Właściciel, Domino
Solutions

Temat: Niewidoczne dokumenty w bazie

Mam następujący problem:
Duża, rozbudowana, skomplikowana aplikacja. Od jakiegoś czasu użytkownicy twierdzili, że znikają im czasami dokumenty. Były to pojedyncze zdarzenia, w bazie są setki tysięcy dokumentów. Na początku więc nie wierzyłem. Potem zrobiłem logowanie w QueryDelete. W końcu zrobiłem funkcję zmieniającą pole Form przy próbie usuwania i odebrałem wszystkim uprawnienia do usuwania dokumentów.
W efekcie wygląda na to, że dokumenty rzeczywiście znikają. Mam w bazie powiązane dokumenty logów z linkami do dokumentów docelowych. Po kliknięciu linku do dokumentu przy braku połączenia z serwerem pojawia się okienko wyboru serwera z repliką bazy. Wybór repliki lokalnej skutkuje komunikatem, "Database is currently opened - it cannot be renamed, deleted or removed". We właściwościach linku ReplicaID jest taka jak ReplicaID bieżącej bazy. Przy kliknięciu na link przy połączeniu z serwerem pojawia się komunikat "You are not authorised to perform that operation".
Jedyne co mi przychodzi do głowy, to jakiś wynalazek antywirusowy albo backupowy na serwerze. Ale nie mam żadnego punktu zaczepienia.

Może ktoś z szanownego koleżeństwa ma jakiś pomysł?
Marek Kuchciak

Marek Kuchciak Wroslauer, IBM
Collaboration
Solutions, Social
Business

Temat: Niewidoczne dokumenty w bazie

Tomasz Frydryk:
W efekcie wygląda na to, że dokumenty rzeczywiście znikają.

Nie napisałeś, jaka wersja serwera/klienta... - to czasami ma znaczenie ;-). Nie bardzo też rozumiem, jak doszedłeś do tego, że dokumenty faktycznie znikają.

Co do komunikatu "Database is currently opened...", to jeden trop jest w bazie wiedzy:
http://www-01.ibm.com/support/docview.wss?uid=swg21161107
i nie wydaje mi się, żeby to miało związek z ginięciem dokumentów.

Inne pomysły na szybko co do możliwych przyczyn ginięcia dokumentów:
- uszkodzona struktura bazy (naprawić z użyciem fixup i compact -c)
- dokumenty są usuwane w innej replice

Marek Kuchciak

konto usunięte

Temat: Niewidoczne dokumenty w bazie

Witam, to samo pytanie co Marek, jak sprawdziłeś, czy dokumenty
naprawdę znikają?(mam na myśli czy masz 100% pewność) Mam też pytanie czy używasz w tym formularzu mechanizmu pól READERS/AUTHORS? Czy komunikat "You are not...." otrzymujesz na prawach Managera do bazy?

P.S. Jakiś czas temu spotkałem się z sytuacją, z bazy names.nsf zniknęły 3 dokumenty użytkowników nie wiadomo czemu(może bug przy replikacji?), na szczęście mieliśmy backup :)Robert Marciniak edytował(a) ten post dnia 02.01.10 o godzinie 13:51
Tomasz Frydryk

Tomasz Frydryk Właściciel, Domino
Solutions

Temat: Niewidoczne dokumenty w bazie

Wątek z "Database is curretly open..." prześledziłem przed zadaniem tego pytania. Wiem z doświadczenia, że komunikaty wyrzucane przez LN czasami są zupełnie nieadekwatne do przyczyny.
Skąd przekonanie, że dokumenty znikają? Baza jest dość rozbudowanym CRMem. Znikają dokumenty firmy a pozostają dokumenty osoby. Nie da się utworzyć osoby bez firmy. Nie jest to ściśle biorąc odpowiedź do dokumentu, ale jest mocno powiązana. Poza tym zostają w bazie dokumenty logujące każdą zmianę w dokumencie, tworzone w PostSave. Jest w nich link do dokumentu, którego dotyczą.W widokach dokumentu nie ma.
Środowisko to 2 4-procesorowe serwery 7.0.4FP1 (w tej chwili, to się z pewnością zmieniało w czasie) w klastrze na Windows 2003. Klienci to w większości LN7 PL, dokładne wersje mogą być różne, oraz pojedyncze przypadki LN5. Użytkownicy pracują na lokalnych replikach. Problem jest z bezpośrednim dostępem do serwera jest w serwerowni w Hamburgu.

Jeszcze jeden trop mi przychodzi do głowy: Pola Readers. We wszystkich dokumentach mam 1 pole Readers, obliczane, mniej więcej formułą: "[Administrator]":"[Sekretariat]":@If(@DbLookup(...). Może uszkodzenie lub błędna/bzdurna wartość tego pola powoduje niewidoczność tych dokumentów?

Stąd inne pytanie: czy bez fizycznego dostępu do bazy na serwerze mogę w jakiś sposób wymusić na serwerze dodanie pola Readers do wszystkich dokumentów w bazie? Normalnie można by to zrobić kopiując plik poza serwer, wyłączając wymuszanie spójności ACLa na lokalnych replikach, dodając pole agentem i kopiując z powrotem na serwer. Czy ta się to zrobić np. Procesem Administracyjnym?Tomasz Frydryk edytował(a) ten post dnia 02.01.10 o godzinie 15:03

konto usunięte

Temat: Niewidoczne dokumenty w bazie

Proponuje o ile masz taką możliwość wejść do bazy na prawach Full Access Administratora, wtedy nawet jeśli są dokumenty z polem READERS w którym nie ma wartości lub wartość jest nieokreślona(twoja formuła wstawiła błędny wpis) będziesz mógł dostać się do tych dokumentów. Poniżej opis z Helpa(3 od końca wpis):

Full access administrators have the following rights:

* All the rights as listed for all administrator access levels (see above).
* Manager access, with all roles and access privileges enabled, to all databases on the server, regardless of the database ACL settings.
* Manager access, with all roles and access privileges enabled, to the Web Administrator database (WEBADMIN.NSF).
* Access to all documents in all databases, regardless of Reader names fields.
* The ability to create agents that run in unrestricted mode with full administration rights.
* Access to any unencrypted data on the server.


Jeśli na Full Accessie link zadziała, wystarczy tylko napisać agenta i dokumenty wrócą...

Mam nadzieję, że przyda Ci się to. Pozdrawiam

P.S. Może warto by było w tym przypadku dodać drugie pole READERS w którym będzie na stałe wpis [Administator](w sensie prostej formuły która ma małe prawdopodobieństwo błędu) wtedy nawet jeśli pierwsze pole się wykrzaczy to na roli [Administrator] dostaniesz się do dokumentów.Robert Marciniak edytował(a) ten post dnia 02.01.10 o godzinie 15:57
Marek Kuchciak

Marek Kuchciak Wroslauer, IBM
Collaboration
Solutions, Social
Business

Temat: Niewidoczne dokumenty w bazie

Tomasz Frydryk:
Jeszcze jeden trop mi przychodzi do głowy: Pola Readers. We wszystkich dokumentach mam 1 pole Readers, obliczane, mniej więcej formułą: "[Administrator]":"[Sekretariat]":@If(@DbLookup(...). Może uszkodzenie lub błędna/bzdurna wartość tego pola powoduje niewidoczność tych dokumentów?

Trop wart sprawdzenia. Robert słusznie podpowiada wejście do bazy na prawach Full Access Administrator - nie musisz mieć fizycznego dostępu do serwera, ale w dokumencie serwera w names.nsf musisz być dopisany do listy osób mogących przechodzić w ten tryb.

Marek Kuchciak
Adrian C.

Adrian C.
projektant/programis
ta

Temat: Niewidoczne dokumenty w bazie

Tomasz Frydryk:"[Administrator]":"[Sekretariat]":@If(@DbLookup(...).

Tomaszu nie idź tą drogą ;), zrezygnuj z tej niedobrej praktyki, uprawnienia wyliczane z UI to nie jest najszczęśliwszy pomysł.
Tomasz Frydryk

Tomasz Frydryk Właściciel, Domino
Solutions

Temat: Niewidoczne dokumenty w bazie

Robert Marciniak:
Proponuje o ile masz taką możliwość wejść do bazy na prawach Full Access Administratora, wtedy nawet jeśli są dokumenty z
P.S. Może warto by było w tym przypadku dodać drugie pole READERS w którym będzie na stałe wpis [Administator](w sensie

To jest właśnie to o co mi chodziło! Dzięki wielkie. Szczerze mówiąc, wstyd się przyznać, ale nie wiedziałem o tej opcji.
Dostępu do serwera w opcji Full Access Administrator pewnie nie dostanę, ale jak dokładnie opiszę moim niemieckim kolegom krok po kroku co mają zrobić, to może się nie pomylą i agent zadziała.

Drugie pole Readers dodałem w poprzedniej wersji, ale nie przeliczyły się wszystkie dokumenty.
Tomasz Frydryk

Tomasz Frydryk Właściciel, Domino
Solutions

Temat: Niewidoczne dokumenty w bazie

Adrian Chrzastowski:
Tomasz Frydryk:"[Administrator]":"[Sekretariat]":@If(@DbLookup(...).

Tomaszu nie idź tą drogą ;), zrezygnuj z tej niedobrej praktyki, uprawnienia wyliczane z UI to nie jest najszczęśliwszy pomysł.
Dwa pytania:
1. Dlaczego nie jest najszczęśliwszy pomysł?
2. Jaka jest alternatywa?
Adrian C.

Adrian C.
projektant/programis
ta

Temat: Niewidoczne dokumenty w bazie

1) Otóż, zamodelowałeś uprawnienia tak, że są one zależne od jakiegoś parametru, czynnika etc.., jakby nie było mają charakter zmienny. Zatem zmiana tegoż czynnika/parametru powinna być triggerem do odświeżenia uprawnień. Chyba że obługujesz to zdarzenie w następujący sposób: szukasz zależnych dokumentów i robisz doc.computeWithForm na każdym, ale to rozwiązanie chyba zdajesz sobie sprawę jest mało wydajne i takie trochę na około.
2) Kawałek kodu obsługujący zdarzenie, powinien ustawić uprawnienia backendowo, bez konieczności angażowania UI.

To tylko moja opinia.
Rafał D.

Rafał D. Programista,
Jeronimo Martins
Dystrybucja Sp. z
o.o.

Temat: Niewidoczne dokumenty w bazie

Skoro dwa pierwsze elementy listy pola Readers są stałe i mają umożliwić bezwzględny dostęp dla tych ról powinieneś zagwarantować sobie ich istnienie także w przypadku błędu wyliczania formuły.

Pierwszy wariant "[Administrator]":"[Sekretariat]":@IfError(@DbLookup(...);””).
Drugi wariant to dodanie w/w ról w polu $Readers poprzez ostatnią zakładkę Security we właściwościach Form.
Trzeci wariant to umieszczenie w/w ról w jednym polu Readers a formuły DBLookup w drugim polu Readers.

Obstawiam, że dochodzi do błędu podczas obliczania fragmentu formuły DBLookup i pole to zawiera „śmieci” stąd brak dostępu do dokumentów.
Tomasz Frydryk

Tomasz Frydryk Właściciel, Domino
Solutions

Temat: Niewidoczne dokumenty w bazie

Adrian Chrzastowski:
1) Otóż, zamodelowałeś uprawnienia tak, że są one zależne od jakiegoś parametru, czynnika etc.., jakby nie było mają charakter zmienny. Zatem zmiana tegoż czynnika/parametru powinna być triggerem do odświeżenia uprawnień. Chyba że obługujesz to zdarzenie w następujący sposób: szukasz zależnych dokumentów i robisz doc.computeWithForm na każdym, ale to rozwiązanie chyba zdajesz sobie sprawę jest mało wydajne i takie trochę na około.
2) Kawałek kodu obsługujący zdarzenie, powinien ustawić uprawnienia backendowo, bez konieczności angażowania UI.

To tylko moja opinia.
Tu bym się nie zgodził.
Uprawnienia są zależne np. od działu do którego jest przypisany pracownik. Przejścia pracownika z działu do działu są sporadyczne i obsługiwane agentem, który m.in. przelicza pole Readers. Backendowo.
Oczywiście ComputeWithForm jest ekstremalnie wolne i lepiej go nie używać bez potrzeby.
Tomasz Frydryk

Tomasz Frydryk Właściciel, Domino
Solutions

Temat: Niewidoczne dokumenty w bazie

Rafał D.:
Pierwszy wariant "[Administrator]":"[Sekretariat]":@IfError(@DbLookup(...);””).
Drugi wariant to dodanie w/w ról w polu $Readers poprzez ostatnią zakładkę Security we właściwościach Form.
Trzeci wariant to umieszczenie w/w ról w jednym polu Readers a formuły DBLookup w drugim polu Readers.
Przerobiłem ten element już jakiś czas temu. Oczywiście był to mój błąd, jesteśmy tylko ludźmi:)

Następna dyskusja:

pewnie lamerskie - ale jak ...




Wyślij zaproszenie do