Współbieżność MS Access (MDB)

Dla małego projektu potrzebuję prostej bazy danych z bardzo lekkimi wymaganiami: kilka tabel, nie więcej niż kilka tysięcy rekordów w sumie, 2 lub 3 użytkowników. Pracuję w środowisku. NET.

Jako że serwer baz danych (nawet te edycje Express) wydaje się w tym przypadku ogromnym przesadą, bardzo prosta baza danych MDB mogłaby spełnić większość wymagań. Jestem jednak zaniepokojony współbieżnością. Moim pomysłem jest umieszczenie ... plik mdb na udostępnieniu sieciowym i umożliwić użytkownikom dostęp do tego pliku od swoich klientów. NET. Db jest głównie przeznaczony do operacji tylko do odczytu, ale użytkownicy będą czasami musieli również aktualizować / usuwać rekordy. Jeśli nie będzie to możliwe w tym czasie (ze względu na zablokowanie db lub cokolwiek), mogę wstrzymać aktualizacje na kliencie i przetworzyć je w późniejszym czasie.

Samo pytanie idzie w tym kierunku:

  • jak obsługiwane są współbieżne odczyty w MDB?
  • Jak obsługiwane są równoległe aktualizacje / usuwanie w MDB?
  • czy istnieje koncepcja zamków i jak mogę je wykorzystać w aplikacji. NET?
  • czy umieszczenie pliku MDB na udostępnieniu sieciowym jest dobrym czy okropnym pomysłem?

Ponieważ pracuję w. NET, chciałbym również wiedzieć, jak mogę wykryć wszelkie problemy z współbieżnością i podjąć odpowiednie działania. Czyli jaki wyjątek mam złapać i jakie działania polecacie podjąć?

EDIT: To może być mój zły opis problemu, ale większość odpowiedzi wydaje się doradzać przejście na pełny serwer DB. I rozumieją różnice i korzyści płynące z instalacji serwera i faktycznie wdrożyli sporą liczbę projektów w MSSQL i Oracle. W tym pytaniu interesuje mnie jednak tylko dostęp i jego współbieżność, więc proszę nie sugerować serwera db.

Dzięki za pomoc.

Author: Fionnuala, 2009-03-29

11 answers

To stare pytanie, ale nikt jeszcze na nie nie odpowiedział. Oto pytania:

  1. Jak obsługiwane są współbieżne odczyty w MDB?
  2. Jak obsługiwane są równoległe aktualizacje / usuwanie w MDB?
  3. Czy istnieje koncepcja blokady i jak mogę ją wykorzystać w aplikacji. NET?
  4. czy umieszczenie pliku MDB na udostępnieniu sieciowym jest dobrym czy okropnym pomysłem?

Na pierwsze dwa pytania można zasadniczo odpowiedzieć jednym wyjaśnieniem. Jedno kluczowe zastrzeżenie tutaj: odpowiedzi jestem podanie tutaj jest specyficzne dla Jet MDB (i ich wariantów) i nie dotyczy całkowicie nowego formatu pliku wprowadzonego począwszy od a2007, czyli formatu ACCDB. Nie do końca zbadałem implikacje usunięcia Jet ULS z ACE i niektóre z poniższych komentarzy mogą zakładać Jet ULS poniżej maski. Dla wielu rzeczy, jednak, można zastąpić "plik LACCDB" na "plik LDB" i wyniki będą takie same.

1-2) jednoczesny odczyt/aktualizacje / usuwanie

Baza danych Jet silnik jest często określany jako baza danych "serwera plików", ponieważ nie ma demona po stronie serwera zarządzającego we/wy z plikami danych na serwerze. Oznacza to, że wszyscy klienci korzystający z Jet MDB odczytują plik bezpośrednio.

Jest to oczywiście przepis na katastrofę, jeśli nie ma wbudowanego mechanizmu obsługi współbieżnego dostępu do pliku.

Jet używa pliku blokującego rekord, gdzie jeśli twoim MDB jest " MyFile.MDB " plik blokujący rekord będzie znajdował się w tym samym folderze i nazywa się " MyFile.LDB". Plik LDB rejestruje co użytkownicy JET ULS mają plik MDB otwarty, co stacja robocza, że użytkownik jest połączony z, i wszystkie informacje niezbędne do negocjowania problemów współbieżności.

Teraz, dla tych, którzy wycięli zęby na silnikach bazodanowych klient / serwer, może to wydawać się prymitywne i niebezpieczne, ale w czasie, gdy silnik bazodanowy Jet został opracowany, jego celem było wykorzystanie jako pulpit bazy danych dla małych grup roboczych i konkurował z innymi pulpitami db silniki takie jak Xbase i Paradox, które używały analogicznych plików blokujących do zarządzania równoczesnym użyciem plików danych z wielu klientów.

W pliku bazy danych Jet, blokady są stosowane albo na stronach danych (które w Jet 4 zostały zwiększone do 4K, podczas gdy w Jet 3.x i wcześniej były 2K), lub na poziomie rekordu, jeśli Tabela danych została pierwotnie utworzona w celu użycia blokowania poziomu rekordu. W pierwszych dniach Jet 4, rekordowe blokowanie zostało uznane przez wielu za dość powolne, szczególnie gdy używając pesymistycznego blokowania, więc wielu deweloperów dostępu nigdy nie używało niczego poza blokowaniem na poziomie strony (@David Fenton podnosi rękę!).

W rzeczywistości, używając blokowania optymistycznego, unikasz większości problemów z współbieżnością, które wynikałyby z blokowania pesymistycznego.

Niektóre zastrzeżenia:

  1. Od DAO blokowanie na poziomie rekordu jest niedostępne, a Ty zawsze masz tylko blokowanie na poziomie strony.

  2. Od DAO istnieje wiele opcji kontrolowania optymistycznego / pesymistycznego blokowanie, w szczególności argument LockEdits metody OpenRecordset, ale również współdziała z niektórymi ustawieniami podanymi w argumencie Openrecordset Options (np. opcja dbReadOnly nie może być używana z LockEdits). Oprócz blokowania, istnieją również opcje dla spójnych/niespójnych aktualizacji, a wszystko to może wchodzić w interakcje z transakcjami (np. zmiany w niezamówionej transakcji nie będą widoczne dla innych użytkowników, a tym samym nie będą z nimi sprzeczne, ale może umieścić blokady tylko do odczytu na tablicach).

Z ADO / OLEDB, te struktury sterujące współbieżnością Jet będą mapowane na odpowiednie funkcje i argumenty Znalezione w ADO/OLEDB. Ponieważ używam Jet tylko z Access, współdziałam z nim tylko przez DAO, więc nie mogę doradzić, jak je kontrolujesz za pomocą ADO / OLEDB, ale chodzi o to, że silnik bazy danych Jet oferuje kontrolę nad blokowaniem rekordów podczas dostępu do niego programowo (w przeciwieństwie do interfejsu dostępu) -- to bardziej skomplikowane.

3) zamki i. net

Nie mogę tu udzielić żadnej porady, poza tym, że prawdopodobnie używasz OLEDB jako interfejsu danych, ale chodzi o to, że funkcja blokowania / kontrola jest tam w samym silniku db, więc prawdopodobnie istnieje sposób, aby kontrolować go za pomocą OLEDB. Może nie jest to jednak ładne, ponieważ wydaje mi się, że OLEDB jest zaprojektowany wokół architektur klient/serwer, a blokowanie plików Jet może nie odwzorowywać tego w elegancki sposób.

4) MDB on a network share

Jet jest bardzo wrażliwy na najmniejszą czkawkę w każdym połączeniu sieciowym. Z tego powodu sieci o niskiej przepustowości mogą zwiększyć podatność baz danych Jet otwartych w wolnym połączeniu.

Dzieje się tak dlatego, że główne fragmenty pliku bazy danych muszą zostać przeciągnięte przez przewód do pamięci RAM komputera lokalnego w celu przetworzenia. Teraz wiele osób błędnie twierdzi, że cały plik MDB jest przeciągany przez przewód lub że całe tabele są przeciągane przez przewód. To nieprawda. Zamiast tego Jet najpierw żąda indeksów (i żąda nie więcej niż to konieczne, aby spełnić zapytanie), a następnie z tego wyniku określa dokładnie, które strony danych są potrzebne, a następnie pobiera tylko te strony. Jest to zaskakująco wydajne i szybkie.

Ponadto Jet wykonuje bardzo inteligentne buforowanie, które może oznaczać, że pierwsze żądanie danych może chwilę potrwać, ale kolejne żądania tych samych danych zdarzają się niemal natychmiast z powodu buforowania.

Teraz, jeśli nie zindeksowałeś swoich tabel dobrze, możesz wyciągnąć cały stół i zrobić pełne skanowanie tabeli. Podobnie, jeśli bazujesz kryteria na funkcjach po stronie klienta, które nie są częścią dialektu SQL Jet, możesz wyciągnąć pełną tabelę(sortowanie na, powiedzmy, Replace (MyField, "A", "Z") może spowodować Pełne skanowanie tabeli). Ale tego typu rzeczy będą nieefektywne z architekturą klient / serwer, też, więc jest to po prostu zdroworozsądkowe projektowanie schematu, aby indeksować rzeczy prawidłowo i być ostrożnym z korzystanie z funkcji UDFs lub innych niż Jet. Ogólnie rzecz biorąc, te same rzeczy, które są wydajne z klientem / serwerem, będą wydajne z Jet (główna różnica polega na tym, że w przypadku Jet lepiej jest mieć stałe połączenie, aby uniknąć kosztów związanych z odtworzeniem pliku LDB, co jest znaczące).

Inną rzeczą, której należy unikać, jest próba użycia Jet data przez połączenie Wi-Fi. Wszyscy wiemy, jak zawodne jest WiFi, a to tylko prośba o problemy z próbą pracy z Jet danych przez połączenie Wi-Fi.

The bottom line:

Jeśli używasz MDB jako magazynu danych do serwowania danych z serwera www, powinieneś umieścić je jak najbliżej pamięci RAM serwera www. Oznacza to, że tam, gdzie to możliwe, na woluminie dysku dołączonym do fizycznego serwera www. Tam, gdzie nie jest to możliwe, potrzebujesz szybkiego, niezawodnego połączenia LAN. Sieci LAN GB w centrach danych są obecnie dość powszechne i byłoby mi bardzo wygodnie pracować z Jet data w tego rodzaju połączenie.

Do wspólnego użytku, np. wielu stacji roboczych klienckich uruchamiających VB.NET aplikacja desktopowa udostępniająca pojedynczy dysk JET MDB jako magazyn danych, bezpiecznie jest mieć plik danych na niezawodnym serwerze plików. Tam, gdzie to możliwe, dobrym pomysłem jest umieszczenie Plików Jet MDB na komputerach, które nie służą wielu celom (np. kontroler domeny, na którym działa Exchange, SQL Server i działający jako serwer plików i serwer wydruku, może nie być najlepszą lokalizacją). Aplikacje takie jak Exchange mogą bardzo zakłócać z funkcjonalnością serwera plików i zwykle nie polecam umieszczania plików MDB na serwerze, który jest wielozadaniowy jako serwer Exchange, chyba że jest bardzo niski wolumen.

Inne uwagi:

  1. Nigdy nie próbuj rozpowszechniać MDB na replikowanym systemie plików, chyba że wszyscy użytkownicy używają tej samej repliki. Oznacza to, że jeśli masz dwa serwery replikujące pliki między nimi, nawet nie myśl o edycji pliku MDB z obu serwerów. Spowoduje to uszkodzenie pliku prawie natychmiast.

  2. Zalecałbym przechowywanie dowolnego MDB na czymkolwiek innym niż natywny system plików Windows obsługiwany przez natywną sieć Microsoft SMB. Oznacza to brak Novella, Linuksa, samby. Kluczowym powodem tego jest to, że najwyraźniej istnieją niskopoziomowe Hooki z Jet do niektórych niskopoziomowych funkcji blokowania w systemie plików Windows, które nie są w 100% replikowane na innych systemach plików. Jestem w tym bardzo konserwatywny i wielu kompetentnych programistów dostępu zgłosiło doskonałe wyniki z odpowiednio skonfigurowanymi serwerami plików Novell (często trzeba wprowadzić pewne korekty blokujące zapis, choć w dzisiejszych czasach może to być mniej istotne - nawet Nie wiem, czy Novell już istnieje!), oraz niesamowitą wydajność serwerów plików opartych na Linuksie z sambą. Jestem ostrożny i polecam każdemu klientowi (dotyczy to również różnych urządzeń SAN, ponieważ niewiele z nich jest opartych na systemie Windows).

  3. Nigdy bym ich nie uruchomił na żadnej zwirtualizowanej system plików z tych samych powodów. Mam jednak klienta, który od kilku lat uruchamia aplikację dostępu dla jednego użytkownika pod Parallels na komputerze Mac Air bez żadnego problemu. Ale jest jednoosobowy, więc problemy z blokowaniem będą stosunkowo niewielkie.

Nie wiem, czy to odpowiada na twoje pytania, czy nie. Wszystko to opiera się na moim 13-letnim regularnym użytkowaniu Jet jako programisty dostępu i badaniu jedynej opublikowanej książki na temat Jet, programistów Jet Database Engine Przewodnik (tylko dla Jet 3.5). Nie podałem żadnych prawdziwych cytatów, ale jeśli ktoś potrzebuje jakichś szczegółów na cokolwiek powiedziałem, zrobię badania, jeśli będę mógł.

 47
Author: David-W-Fenton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-23 22:04:51

Zbudowałem kilkanaście małych aplikacji biznesowych w Access na przestrzeni lat. Większość ma na nich maksymalnie 10-20 użytkowników na raz. Bazy danych są podzielone między" app "i" data " bazy danych. Wydajność jest przyzwoita i nie ma problemów z współbieżnością. Również korupcja w zasadzie nie istnieje od czasu Access 2000 SP2.

Jest wiele osób mówiących "nigdy nie używaj dostępu" - cóż, jeśli jest to zrobione dobrze (tj. przez profesjonalnego dewelopera) Access to całkiem niezły pakiet programistyczny i dobrze się z tego żyło. Moi klienci są bardzo zadowoleni z tego, co zbudowałem.

 12
Author: DJ.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-30 00:32:52

Napisałem dwa komercyjne produkty, które wykorzystują bazę danych Access, uruchamianą z udziału sieciowego, dla zazwyczaj do 10 użytkowników. Jeśli go nie nadużywasz, naprawdę nie ma problemu; ale jak widać wielu programistów nigdy tam nie dociera - a ze względu na jego niski charakter, jest na nim wiele gównianych hacków. W przypadku jednego produktu musiałem przeprojektować aplikację ze względu na wszystkie problemy opisane szczegółowo przez innych; ale po wyczyszczeniu go, nigdy nie miałem integralności bazy danych problem w setkach instalacji.

Jego jedną dużą zaletą jest baza danych pojedynczych plików, która jest łatwa do tworzenia kopii zapasowych, przywracania i kopiowania na laptop do sekcji. Prawie wszystkie alternatywy, w tym sqlite (choć niektórzy tego nie przyznają), wymagają pewnej formy uwagi DBA od czasu do czasu.

W większości przypadków Access domyślnie udostępnia blokady rekordów i plików dla niektórych DDL (np. zmiany schematu).

Ale Microsoft w zasadzie go dezaktualizuje, a niektóre z Twoich koledzy będą gardzić Tobą za używanie go.

(w tym momencie Zwykle chowam się za osłoną i krzyczę "nadchodzi!!!".)

 11
Author: dkretz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-30 00:25:27

Access to tak naprawdę desktopowe rozwiązanie dla pojedynczego użytkownika. W praktyce ma górną granicę użytkownika "jeden".

Jest to również silnik lokalny. Oznacza to, że po uruchomieniu zapytania dane są pobierane przez sieć do lokalnego silnika JET w celu przetworzenia. A .plik ldb jest umieszczany na udziale sieciowym w celu sterowania blokadami.

Jeśli używasz silnika po stronie serwera (MSSQL, MySQL, Sybase, 'Orable itp.), wysyłasz zapytanie do silnika, który je przetwarza i zwraca wyniki do ciebie. Zamki są trzymane wewnętrznie.

Ma to ogromny wpływ na wydajność, stabilność i integralność danych.

Jeśli użytkownik zdecyduje się nacisnąć przycisk reset, baza danych dostępu ma spore szanse na uszkodzenie i będziesz musiał usunąć .ldb.

Z odpowiednim silnikiem bazy danych (MSSQL, Sybase, 'Orable: nie lubię kopii zapasowych MySQL' a) wtedy masz również odpowiednią możliwość tworzenia kopii zapasowych. Jeśli nie masz jakiegoś genialnego oprogramowania do tworzenia kopii zapasowych plików inuse, możliwe, że nie będziesz miał kopii zapasowych danych w dB dostępu.

Wspomniałem o blokadach, ponieważ silnik db może obsługiwać współbieżność i transakcje znacznie bardziej efektywnie i elegancko niż jakikolwiek system oparty na plikach.

Widzę użycie projektu Access jako front-end dla silnika bazy danych, ale nie inwestowanie w pełną aplikację kliencką z zapleczem Access.

 3
Author: gbn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-29 17:21:33

Używałem Access, a właściwie Jet jako zaplecza na bardzo małej, prywatnej stronie, która nigdy nie może się rozwijać, ponieważ jest ograniczona wielkością zawodu w tym małym kraju. Od trzech lat nie miałem żadnych problemów. Jest mniej niż 100 użytkowników, z około trzydziestu do czterdziestu używa go codziennie. Tabele mają kilka tysięcy rekordów.

 3
Author: Fionnuala,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-29 20:41:59

Nie mam dużego doświadczenia z dostępem, ale ten link może Ci się przydać:

Http://office.microsoft.com/en-us/access/HP052408601033.aspx

" możesz umieścić całą bazę danych Access na serwerze sieciowym lub w folderze udostępnionym. Jest to najprostsza metoda do wdrożenia. Wszyscy udostępniają dane i używają tych samych formularzy, raportów, zapytań, makr i modułów. Użyj tej strategii, jeśli chcesz, aby wszyscy korzystali z bazy danych Access w ten sam sposób lub jeśli nie możesz obsługiwać użytkownicy tworzący własne obiekty."

" po otwarciu pliku bazy danych Access (.mdb) w trybie współdzielonym Microsoft Access tworzy również plik informacji blokującej (.ldb) o tej samej nazwie pliku (na przykład Northwind.ldb) oraz w tym samym folderze co plik bazy danych. Ten plik informacji o blokowaniu przechowuje nazwę komputera (taką jak mypc) i nazwę zabezpieczeń (taką jak Admin) każdego współdzielonego użytkownika bazy danych. Microsoft Access wykorzystuje te informacje do kontrolowania współbieżności. W większości przypadków Microsoft Access automatycznie usuwa plik informacji o blokowaniu, gdy ostatni użytkownik zamyka plik bazy danych."

 2
Author: Giovanni Galbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-29 16:52:02

Access ma być multi-user - myślę, że Microsoft zaleca go dla maksymalnie 4 lub 5 użytkowników, ale w praktyce zalecałbym, aby nigdy nie używać bazy danych Access, w której jest więcej niż jeden użytkownik, chociaż jeśli naprawdę nie masz wyboru, jest to dopuszczalne dla dwóch lub trzech, biorąc pod uwagę pewne postanowienia.

Miałem doświadczenie z czterech lub pięciu systemów korzystających z zaplecza bazy danych Access-wszystkie nabyte od innych "programistów" - i we wszystkich przypadkach przeniosłem je do SQL Server jako as priorytet po wszelkich natychmiastowych aktualizacjach i poprawkach wymaganych przy przyjmowaniu umowy-zazwyczaj tak szybko, jak tylko mogłem przekonać szefa do płacenia rachunku. Czas na to wynosi zwykle kilka miesięcy, więc widziałem, że działa jednocześnie przez rozsądny czas pod kilkoma różnymi aplikacjami.

W zasadzie będzie to działać poprawnie, jeśli system nie ma wielu współbieżnych wstawek/aktualizacji i nie jest intensywnie używany. Główne problemy praktyczne z mojego doświadczenia są..

  1. Jest podatny na korupcję - po prostu tak jest. Ogólnie nie jest to zbyt duży problem, ponieważ otwarcie pliku i uruchomienie compact i repair rozwiąże problemy, ale dobry system tworzenia kopii zapasowych jest absolutnie niezbędny.

  2. Powoli. Za każdym razem, gdy uaktualniłem system do SQL Server, otrzymałem wiele pochwał za przyspieszenie systemu od użytkowników.

  3. Plik bazy danych pęka ze względu na sposób, w jaki dostęp oznacza rekordy jako zaktualizowane lub usunięte. To dodatkowo spowalnia system, ponieważ plik musi być ładowany przez sieć. W związku z tym niezbędny jest pewien system kompresji danych, zwykle na co dzień.

Wszystkie z powyższych problemów są znacznie mniej problemów z pojedynczymi systemami użytkowników, ponieważ podstawowe problemy, które je wywołują, są znacznie mniej widoczne.

W sumie muszę podkreślić, że nigdy nie zalecałbym dostępu do żadnego systemu dla wielu użytkowników. Jednak jeśli naprawdę masz zbyt prawdopodobnie uciec z nim, o ile jest to lekko używana aplikacja i nie wprowadzasz procedur tworzenia kopii zapasowych i konserwacji.

 2
Author: Cruachan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-29 21:57:29

Już kilka razy mówiono o korzystaniu z prawdziwej, darmowej platformy bazodanowej dla wielu użytkowników. Ale jeden z powodów, dla których nie zostało podane. Powodem tego jest to, ile istniejących, niechlujnych, kłopotliwych, dużych baz danych dostępowych zaczęło się jako "kilka rekordów, jeden lub dwóch użytkowników max"? Zaryzykowałbym powiedzenie ich wszystkich.

O ile w całej firmie nie ma tylko dwóch lub trzech pracowników, istnieje prawdopodobieństwo, że jeśli opracujesz użyteczny program, będzie on w końcu używany przez więcej niż oryginalni dwaj lub trzej użytkownicy, mają więcej niż oryginalni kilka tysięcy rekordów i będą rozszerzać się na przestrzeni lat o wiele formularzy, o wiele więcej tabel i o wiele więcej danych. Nie można przerobić fundamentu domu po jego wybudowaniu. Zbuduj silny fundament już dziś, a możesz rozbudować dom do woli. To samo dotyczy oprogramowania.

 1
Author: HardCode,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-29 19:17:27

Gdy korzystam z udziału sieciowego, korzystam z sieciowej bazy danych (mysql/firebird/mssql) zamiast access.

Dla sytuacji, w której opisanie przy użyciu Access nie byłoby problemem.

Używałem dostępu w trudniejszych sytuacjach, niż to głównie podczas pracy ze stronami internetowymi, gdy dostęp nie jest nadużywany ponad miarę, naprawdę nie jest tak źle z silnikiem bazy danych. (nie mówię o formularzach i tym podobnych tylko o tabelach i rekordach)

Kiedy twoje działanie wstawia / aktualizuje/usuwa od kilku użytkowników na raz, a potem robi się trochę Owłosione. To jest punkt, w którym zaczynasz myśleć o prawdziwych silnikach baz danych.

Również jeśli chcesz mieć małą bazę danych, która jest bezpieczna dla wątków, możesz rzucić okiem na vistadb (wolniejszy niż dostęp, nie zawsze darmowy, 100%. NET)

Wydaje mi się, że access używa blokad poziomu tabeli z jakimś mechanizmem kolejkowania. Jeśli martwisz się o to, zawsze możesz rzucić symulowanym testem warunków skrajnych.

 1
Author: Mischa Kroon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-29 21:50:28

Myślę, że można go zdefiniować w łańcuchu połączenia aplikacji. Net. Wyszukałem w googlach JET, access i record locking

Oto link , który może pomóc.

Proszę zobaczyć zaakceptowaną odpowiedź, aby uzyskać prawdziwe informacje na temat tego, jak Access i JET uzyskują dane.

 1
Author: matt eisenberg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-23 16:23:02

Proszę nie używać Access dla scenariusza dla wielu użytkowników.

Właśnie przeszedłem przez dwa tygodnie bólu, ponieważ mój poprzednik w projekcie wybrał Access jako back end.

Konkretne powody:

  • nie ma czegoś takiego jak Linq-to-Access
  • Access ma wiele dziwactw, takich jak zależności od kolejności dodawania parametrów do poleceń, które zajmie ci wieki do debugowania
  • Access doesn ' t scale
  • aktualizacje baz danych są obowiązkiem w porównaniu z używaniem SQL Serwer
 -1
Author: Ben,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-29 18:36:14