Domanda

Al momento sono in una squadra di 4 persone con il compito di sviluppo e nel mantenimento di un patrimonio applicazione MS Access.

L'applicazione è abbastanza grande, con centinaia di moduli, report, query e le tabelle.

Attualmente abbiamo la parte anteriore divisa in circa 7 componenti MDE, ognuno dei quali è essenzialmente un'applicazione a sé stante, uniti da un front-end comune che è essenzialmente solo una GUI menu.

Usiamo tabelle collegate per collegare questo front-end per un fine MS Access indietro, utilizzando OpenDatabase (C: \ Access.mdb) chiama nel codice stesso. Questa applicazione è stata intorno per un po ', e utilizza quindi DAO per connettersi a un Access 97 backend.

Questo significa che ogni utente dell'applicazione ha la propria copia locale del database per apportare modifiche. Abbiamo un ambiente accuratamente cambiamento controllata che assicura che solo una persona può essere al lavoro su dati in una sola volta, devono convalidare tutti i loro cambiamenti prima di passare il database master alla persona successiva.

Questo ambiente di controllo delle modifiche è soffocante per usare un eufemismo, e presto avremo bisogno di ulteriori modifiche dei dati da effettuare in un lasso di tempo che rende l'accesso utente singolo impraticabile.

Quindi, abbiamo bisogno di passare a l'accesso multi-utente, ma multi-utente voglio dire solo circa 4 persone. Questa gente probabilmente non situati fisicamente presso lo stesso ufficio, quindi è necessaria una qualche forma di collegamento di db remoto.

L'intera applicazione rischia di essere ri-lavorato in un anno o due di tempo di, spostando sia la parte anteriore e back-end lontano da MS Access. Tuttavia, abbiamo bisogno di accesso multi utente ASAP.

Quindi, qual è il percorso più rapido per multiutente beatitudine?

Suggerimenti che stiamo considerando sono:

  • Impostazione di una VPN in modo che MS Access ritiene che accede a un disco di rete regolare. Questo appare come sarà lento e sono sicuri se una VPN è abbastanza affidabile, ma è solo una soluzione temporanea che cerchiamo in ogni modo.
  • Conversione del backend mdb in qualcosa di destinato per l'utilizzo a distanza multiutente, come SQL Server. Noi semplicemente non sappiamo come fare questo rapido e semplice (ci affidiamo a regole di validazione di campo, per esempio) Avremmo anche presumibilmente dovuto riconvertire in formato MS Access come altre applicazioni di accettare gli stessi file mdb come input dei dati.
  • Quasi tutto ciò che può essere effettuata da 1 o 2 persone in un paio di mesi.

EDIT:. In risposta ai commenti qui sotto

I dati che viene elaborato dall'applicazione è altamente dati critici di sicurezza. Si cambia raramente, e deve essere convalidato per mostrare non ci sono errori logici prima di essere esportato. In realtà, i dati sono soggette a restrizioni più pesante l'applicazione stessa!

I dati sono interconnessi in modi non banali. Come tale, una modifica a un record in una tabella può invalidare un record di un'altra tabella a causa della logica di business complicato. In quanto tale, al momento, una copia del file di dati mdb è designato il database master. Solo una persona ha il master in qualsiasi momento. Se si desidera apportare modifiche ad esso, è necessario ottenere quel database dalla persona che attualmente ha. Questo di solito non è un problema in quanto le modifiche dei dati abbastanza raramente che non c'è abbastanza tempo per questo si verifichi.

Tuttavia, un grande cambiamento sta arrivando, che non c'è stato dato abbastanza tempo per lavorare in questo modo. Dobbiamo avere più persone che lavorano sui dati in una sola volta. Ora mi rendo conto che è possibile condividere il file mdb in un'unità di rete e avere più persone nella stessa lavoro d'ufficio su quel file con poco o nessun rischio, ma abbiamo bisogno di persone provenienti da diverse aziende di lavorare sui dati, allo stesso tempo . se ho capito bene, la creazione di una VPN per condividere i dati attraverso è una cattiva piano.

Credo che dobbiamo cambiare il backend lontano da MS Access e passare a qualcosa di simile a SQL server. Ma come è facile convertire uno schema in questo modo? Come sono le regole di convalida di tabella MS Access rappresentate in SQL Server?

È stato utile?

Soluzione

Come regola generale acccess destra dell'area di accessi multiutente come una condivisione di file. Ciò significa che si potrebbe prendere il database back-end (file con estensione mdb) e metterlo su una cartella condivisa su un server. Ciò consentirebbe un paio di persone nel vostro ufficio per eseguire l'applicazione, allo stesso tempo. Tuttavia questo significa che stiamo parlando di un tipico ufficio LAN. Quando si comincia a parlare di connessioni remote e VPN e reti geografiche (WAN), quindi utilizzando l'accesso da una condivisione di file non è stabile.

Quindi, se questo è solo tre o quattro persone in un tipico ambiente di rete aziendale, quindi a seconda dell'applicazione, è molto probabile che si può semplicemente mettere il back-end su una cartella condivisa sul server e continuano ad avere tutti i front-end distribuiti su ogni computer, e sono legati a quel file uno backend del database (MDB) sulla cartella condivisa. accesso MS abbastanza funziona bene in questo modo.

Tuttavia, per parlare di un qualche tipo di VPN o WAN, quindi una possibile soluzione è quella di spostare il file mdb end torna a SQL server, e continuare a utilizzare tutte le forme, relazioni, ecc dall'applicazione corrente (La maggior parte della vostra applicazione verrà eseguita come prima, quando si esegue questa operazione).

Un altro davvero grande tecnologia da considerare è thin client, o servizi terminal cosiddetti. Servizi terminal solo una fantasia edizione di un sistema di desktop remoto. TS permette alle persone oltre la larghezza di banda anche abbastanza limitato per eseguire e utilizzare l'applicazione da postazioni remote.

Tuttavia, se si sta parlando di tre o quattro utenti su un tipico ufficio LAN, che è molto possibile l'applicazione verrà eseguito con molto piccole modifiche come è, ed è sufficiente spostare il file di database back-end in una cartella condivisa su un server da qualche parte. Non posso sottolineare, tuttavia, che questo funziona solo se tutte le persone sono sulla stessa LAN piccolo ufficio, e non qualche tipo di connessione remota o una WAN / VPN. Così, nel caso di WAN / VPN, utilizzare i servizi di terminale, o prendere in considerazione lo spostamento del back-end di SQL Server, e continuare a utilizzare il fronte dell'applicazione finale come è.


modifica - maggiori informazioni: Ok, quindi con maggiori info qui siamo in grado di andare avanti. Come detto, ms-access è multiutente destra, fuori dalla scatola. Hai bisogno di persone provenienti da luoghi diversi di lavorare su questi dati. Quindi, questo significa che l'applicazione deve essere messa a punto per la capacità multi-utente indipendentemente da questo diverso problema posizione. Una volta che avete l'installazione dell'applicazione per il multi-utenti allora poi affrontare la questione della concessione alle persone di utilizzare il software da luoghi diversi.

Questo non è diverso rispetto a quando abbiamo qualcosa per gestire l'azienda festa di Natale. Se abbiamo un progetto in modo tale che dopo la festa di Natale si elimina l'intero file di ricominciare per la festa di Natale del prossimo anno, quindi possiamo ancora permettere molteplici usi in questa applicazione. Tuttavia il design è tale che non è possibile avere più feste di Natale attivi allo stesso tempo, a causa dei vostri disegni. Quindi, in questo caso non è il fatto che l'applicazione è multi utente. In questo tipo di scenario, si potrebbe effettivamente aggiungere una nuova tabella denominata tabella anno festa di Natale. Poi uno può riguardare tutte le tabelle nella domanda a questo tavolo Master come tabelle figlio. In questo modo si può avere più feste di Natale attivi allo stesso tempo, per questo disegno. Poi, quando si avvia l'applicazione, agli utenti viene richiesto con un certo tipo di elenco di scegliere ciò festa di Natale che si desidera lavorare.

Quindi non confondere le due questioni separate sopra. Non ha senso chiedere come servizi di terminale permette l'applicazione per essere multiutente, lo fa nulla di simile. Ciò che fa è TS ti permettono di prendere una domanda che è già a più utenti e consentire alle persone da postazioni remote di utilizzare tale applicazione. Così TS è un sistema che permette alle persone di eseguire e utilizzare l'applicazione da remoto ovunque su Internet. I vostri disegni saranno ancora dettare se l'applicazione che ci permette di più di una festa di Natale per essere attivo al tempo tegli stesso tempo, però.

Quindi, non si fanno MS accesso multiutente, MS Access è multiutente a destra, fuori dalla scatola e non si hanno a che fare nulla, se non adottare alcune tecnologie che consentono agli utenti in luoghi diversi utilizzano l'applicazione. Quindi, questo è ciò che fa TS, e anche SQL Server può fare per voi.

Se il progetto è possibile stabilire un solo progetto, allora possiamo consentire a più utenti di diverse posizioni nel mondo ad utilizzare un'applicazione, ma è consentito soltanto di avere un progetto attivo a causa delle limitazioni di progettazione dell'applicazione.

Quindi, tutta la vostra tabella di aggiornamento logica ecc possono funzionare come prima. Devi semplicemente porsi è fa l'applicaion ora permettono a un utente di uscire dal applcaion, e un altro utente entra in esso e fare il loro lavoro? Finta che c'è solo un computer autonomo in ufficio. Può Diffent dipendenti durign il giorno Sit Down e l'uso che un computer e che si domanda con quello di back-end per ciascuno dei loro progetti separati?

Quindi, utilizzando SQL server, o servizi di terminale non rendere l'applicazione più (o meno) a più utenti, allora è ora. Queste tecnologie possono certamente aumentare il numero di utenti che possono utilizzare l'applicazione allo stesso tempo.

Quindi, MS accesso è multi-utente ora. Tuttavia server quale SQL fa, o TS non fa altro che permette molta più flessibilità in termini di come gli utenti in remoto collegati a questa applicazione.

Altri suggerimenti

IMO sicuramente avrete bisogno di convertire il database in un server multiutente indipendentemente da quali altre soluzioni si considera. C'è una procedura guidata upsize che dovrebbe rivelarsi utile ( http://support.microsoft.com/kb/237980), probabilmente incontrano elementi che permette di accesso e il server SQL non ma per la maggior parte dovrebbe essere indolore. È possibile puntare le vostre copie di accesso locali per utilizzare questa nuova tecnica d'origine (tramite ODBC per esempio) e credo che tutti dovremmo lavorare più o meno nello stesso modo. Non hanno fatto in anni, idea di cosa queste regole di validazione di campo (non sarebbero ancora essere in forma?) sarebbero andate a finire in. È possibile scaricare una copia di prova di SQL Server e fare questo in meno di un'ora per ottenere una sensazione di quanta fatica sarebbe necessario.

Come al solito hai una risposta eccellente da Albert Kallal.

Se si vuole considerare l'upsize a SQL Server v'è uno strumento dal gruppo di SQL Server. Migrazione SQL Server Assistant per l'accesso (SSMA Access) http://www.microsoft.com/sql/solutions/migration/ accesso / default.mspx che è meglio che l'Upsize guidato di accesso.

Si veda anche il mio pensiero a caso, SQL Server Upsize dalla pagina di Microsoft Access punte a http: //www.granite.ab.ca/access/sqlserverupsizing.htm

Come si può vedere dai commenti ai vostri invii il controllo delle modifiche termine come l'organizzazione utilizza non è tradizionale e piuttosto interessante. Anche se posso vedere come qualcuno anni fa cercando di capire una soluzione per uffici remoti i dati che cambiano sarebbe venuto con questa soluzione. Posso anche vedere se come sarebbe stato soffocante.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top