Newsgroup: it.comp.appl.access
Titolo: Db server via odbc accessibile solo da una postazione alla volta

Sto usando delle procedure realizzate con Access 2013 con tabelle 
collegate al db via odbc, il db server e' un Firebird 3.0
E' una nuova installazione, tutti i pc sono Win 10 pro, attivati 
regolarmente (lo specifico perche' a volte la non attivazione comporta 
problemi con il numero connessioni ad un pc)
Su pc1 e' installato sia programma che db server, su pc2 solo programma, 
su pc3 solo programma
 
L'anomalia che sto riscontrando e' l'impossibilita' di avviare 
contemporaneamente i programmi sui tre pc
Se avvio programma da pc1 tutto a posto
Se avvio programma da pc2 tutto a posto
Se avvio programma da pc3 tutto a posto
 
Ma quando avvio programma da pc1, parte correttamente, se tento l'avvio 
anche da pc2 mi attende 30 secondi (credo sia il timeout del driver 
odbc) e poi il programma si chiude da solo
Stessa cosa anche se, senza avviare programma, tento la connessione di 
test del driver odbc (questo driver specifico c'ha un tastino per la 
connessione di prova)
Mi dice "Open '10.4.0.100:c:\public\db\peppe.fdb' failed"
 
Premesso che ho diverse installazioni che usano:
- le stesse procedure Access
- con la stessa versione di db server
- con la stessa versione di driver odbc
- la stessa configurazione del driver odbc
 
da cosa potrebbe dipendere l'impossibilita' di accedere 
contemporaneamente ai dati da piu' postazioni?
 

 contemporaneamente ai dati da piu' postazioni?
 
Si va per tentativi:
 
1 -  Se esegui il programma in multisessione sul PC Server (ove è installato Firebird), da lo stesso problema?
2 - Hai provato a disabilitare sui PC l'antivirus?
3 - Gli Utenti hanno privilegi particolari? Hai provato ad accedere come amministratore prima di avviare i programmi?
 
Saluti


1- si, questa non l'ho provata, appena riesco ad accedere ai pc 
malfunzionanti la provo
 
2- si certo, sia l'antivirus alternativo installato dopo primo 
avviamento pc, sia quello integrato di Win10, ma sembra non influenzare 
il problema
 
3- si, dopo le prime prove ho lavorato con utenti administrator, ma 
anche questo non sembra influenzare il problema
 
Essendo anomalia particolarmente strana (almeno per me) ho provato a 
metter su tre macchine virtuali ognuna con Win10 vergine, e tentato di 
replicare da me il problema
Da me funziona tutto regolarmente, nessun problema di accesso 
concorrente, e quindi darei per scontato che le componenti software 
usate e le configurazioni siano corrette
Ipotizzo sia qualche programma a bordo pc1 (quello col db server)
 


Pure in locale non si avvia seconda istanza programma e relativa seconda 
connessione al db
Provato anche senza avviare programma 'test connessione' da 
configurazione driver odbc ed anche quello fallisce se c'e' gia' prima 
istanza programma accesa
 
 


premesso che non conosco firebird ma da quello che dici sembrerebbe questo :
 
"However, an embedded server locks a database file for its own exclusive 
use after successful connection. This means that you cannot access the 
same database from multiple embedded server processes simultaneously (or 
from any other servers, once an embedded server has locked the file).
 
The embedded server has no facility to accept any network connections. 
Only true local access is possible, with a connect string that doesn't 
contain a host name (not even localhost). "
 
https://docs.huihoo.com/firebird/manual/ufb-cs-embedded.html
 
 
 
qui si parla di versione "Embedded", può centrare?
 
BFS
 
 


Ringrazio per l'aiuto
Ma no, pur esistendo la versione 'embedded' di Firebird, io installo 
sempre il server classico per sfruttare appunto la multiutenza
 
 
 

 istanza programma accesa
 
Prova ad avviare il PC Server in modalità provvisoria e ripetere il test.
 
Saluti

 sempre il server classico per sfruttare appunto la multiutenza
 
Eppure sembrerebbe settata una qualche opzione sul Server SQL che ne limiti gli accessi. Sicuro che non esista qualcosa del genere?
Comunque, se l'apertura in multisessione continua a non funzionare anche col PC Server in modalità provvisoria, a quel punto si potrebbe escludere windows (o meglio, gli N servizi normalmente in esecuzione) dal banco degli imputati.
 
Saluti


Non so se è pertinente (non ho letto tutto il thread) ma mi sono trovato nella situazione di avere:
- SQL Server come database centralizzato;
- 3 client Access su 3 PC diversi;
- che devono leggere/scrivere record contemporaneamente;
- il tutto via ODBC.
In principio ero entusiasta perché, passando ad SQL Server, pensavo di aver risolto il problema degli accessi concorrenti ad un file mdb, ma alla fine l'unico vantaggio è avere i dati su un database robusto.
Permanevano gli stessi problemi di prima: quando Access accede a una tabella SQL Server, quest'ultimo fa un lock totale sul recordset, impedendo agli altri client di scrivere o modificare record.
La mia soluzione è stata la stessa che usano i software gestionali cioè GESTISCI TU IL LOCK ai record tramite un campo:
- lo poni a "lck" quando leggi il record, ma solo se nessun altro sta leggendo quel record, altrimenti lo impedisci con un messaggio;
- copi i valori del record su una maschera locale (magari su una tabella associata al form avente lo stesso nome della tabella sul server);
- fai le modifiche dei dati;
- quando confermi quanto inserito sulla maschera, vai a salvare o modificare il record sul server in base ai valori locali (query di insert o update);
- rilasci il lock azzerando il campo sul quel record.
Questa è una procedura indicativa, poi l'ho resa piu sofisticata col nome di chi sta modificando, un timer che mostra a tutti i client e in tempo reale le righe lockate, un sistema di privilegi nei lock R/W, ecc.
Morale della favola: stanco di barcamenarmi tra le promesse di blocco record di Access e SQL Server, mi sono arrangiato e cosi ne ho il pieno controllo.