Access KTO blokuje baze ??? !!!

0

Witam,
Stworzyliśmy bazę danych po kursach acces. Jesteśmy "przed" ostatnim kursem vba.
W dalszym ciągu nie potrafimy znaleźć odpowiedzi na nurtujące nas pytanie " Kto blokuję bazę ?!"
Zazwyczaj dzwonimy do IT, jest to średnio 2 razy dziennie ...

Od tygodnia poszukuję informacji jak pokazać kto jest aktualnie zalogowany.
Udało mi się znaleźć i stworzyć moduł, który wyświetla tylko informację o mnie, że jestem zalogowany, a mianowicie :
**
Public Function getUserName() As String

       getUserName = Environ("USERNAME")
       MsgBox (getUserName)

End Function**

Wybija tylko info o mojej nazwie użytkownika i nikogo więcej.
Jest może jakiś kod który pokaże, że oprócz mnie na bazie jest jeszcze inna osoba ?

0

Baza jest plikowa, bezserwerowa, zgaduję z dzielonego folderu. Nie jest dostępna informacja o zalogowaniu. W ogóle bazy plikowe są nieszczególnie dobre do ambitniejszego programowania, i eksploatacji produkcyjnej.

Taka informacjia zwykle jest dostępna w przypadku prawdziwych baz SQL (posiadających serwer).

0

Sub ShowUserRosterMultipleUsers()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim i, j As Long

Set cn = CurrentProject.Connection

' The user roster is exposed as a provider-specific schema rowset
' in the Jet 4.0 OLE DB provider.  You have to use a GUID to
' reference the schema, as provider-specific schemas are not
' listed in ADO's type library for schema rowsets

Set rs = cn.OpenSchema(adSchemaProviderSpecific, _
, "{947bb102-5d43-11d1-bdbf-00c04fb92675}")

'Output the list of all users in the current database.

Debug.Print rs.Fields(0).Name, "", rs.Fields(1).Name, _
"", rs.Fields(2).Name, rs.Fields(3).Name

While Not rs.EOF
    Debug.Print rs.Fields(0), rs.Fields(1), _
    rs.Fields(2), rs.Fields(3)
    rs.MoveNext
Wend

End Sub

Znalazłem coś takiego wybija tylko administratorów ...

COMPUTER_NAME LOGIN_NAME CONNECTED SUSPECT_STATE
DEL-TH-S216 Admin True Null
DEL-TH-S205 Admin True Null

0

Jeśli to plik współdzielony, to:

net use \\host\wspoldzielony_folder\akces.db /user:twoj_user@twoja_domena.foo

Można też spróbować zobaczyć na serwerze, które procesy trzymają uchwyt do pliku. Jest takie narzędzie

0

Ze względu na to właśnie pytanie (a jeszcze lepsze "kto rozsypał bazę???") porzuciłem dawno temu bazy plikowe.
Polecam odciąć dostęp z sieci do katalogu bazy i korzystać jednostanowiskowo.
A w międzyczasie przenieść się na https://www.microsoft.com/pl-pl/sql-server/sql-server-editions-express

0

Znalazłem coś takiego wybija tylko administratorów …

Bo tak działa system zabezpieczeń w Access, jeżeli chodzi o wersje ,<2007 to można było przy użyciu pliku mdw stworzyć użytkowników do bazy i wtedy każdy logował się swoim loginem, od wersji 2007 zawsze jest to admin, teoretycznie host z którego nawiązano połączenie jest jakimś identyfikatorem

0
Panczo napisał(a):

Znalazłem coś takiego wybija tylko administratorów …

Bo tak działa system zabezpieczeń w Access, jeżeli chodzi o wersje ,<2007 to można było przy użyciu pliku mdw stworzyć użytkowników do bazy i wtedy każdy logował się swoim loginem, od wersji 2007 zawsze jest to admin, teoretycznie host z którego nawiązano połączenie jest jakimś identyfikatorem

Dzięki za odpowiedź. Problemem jest to, że nie pokazywał użytkowników na których mi najbardziej zależy, czyli tych co nie mogą wprowadzać zmian do bazy. Pokazywał samych adminów, czyli osoby które siedzą w jednym biurze. W " starej bazie" był kreator przypisania konta jako administrator i możliwość utworzenia użytkownika. Może gdybyśmy stworzyli konto użytkownika i każdego z osobna przypisali jako użytkownik, wybiło by także "User". Ale od poniedziałku korzystamy z Access 2013, a tutaj tego nie ma.

Przybliżę bardziej sytuację z bazy która jest na serwerze ( do pliku mają dostęp tylko osoby, które muszą korzystać z bazy) korzysta ok 20 użytkowników ( na całym zakładzie) i 3 osoby wprowadzające dane do bazy ( jedno biuro). Baza dalej powstaje także brak możliwości ustalenia kto blokuje jest uciążliwe. Dzwonienie do 20 osób jest uciążliwe, ponadto połowa nie odbiera ( spotkania/ nieobecność przy kompie). Ja jako laik z języka vba szukam wszędzie rozwiązań. Brakuje mi komunikatu a'la excell o komunikacie tylko do odczytu z powodu otwarcia przez użytkownika xxxx. Dziwne, że nie można takiej informacji uzyskać skoro każdy jest zalogowany do programów offica swoim loginem.

0

A uprawnień NTFS do pliku nie możecie dodać?
Użytkownicy którzy mają mieć go tylko do odczytu mają zakaz zapisu, a osoby, które mogą wprowadzać dane mają opcję modyfikacji.
Wg mnie załatwiło by to wszystko.

1

No to się kłaniają dobre praktyki z MS Access (wiem, ze to oxymoron ;))

Pytania pomocnicze:

Dane są w oddzielnym pliku?
Każdy użytkownik uruchamia swoja kopie "frontu"?
Co rozumiesz prze blokowanie bazy?

od wersji 2007 MS zrezygnowal z kontrolowania dostępu na poziomie użytkownika, dlatego wszyscy pracują jako "admin"

0

Przede wszystkim 20 równoczesnych użytkowników bazy MSAccess to bardzo dużo. MSAccess jest to jednak baza typu desktop, a to że można z niej korzystac sieciowo jest tylko dodatkowym bonusem. Osobiście mam złe doświadczenia z bazami MSAcces jeżeli chodzi o wydajność przy dużej liczbie użytkowników i większości przypadków zakończyło się to przeniesieniem bazy do MSSSQL, a MSAccess robił tylko za front

1 użytkowników online, w tym zalogowanych: 0, gości: 1