Vai al contenuto
PLC Forum


Sql Vs Access


simbad

Messaggi consigliati

ciao a tutti,

ho un cliente che ha deciso di voler modificare la supervisione dei suoi impianti per renderla più stabile...instabilitù dovuta a certi errori di windows che avvengono ogni tanto, quando il progetto lavora sui DB, DB realizzati con Access e programmi realizzati con VB. La fortuna vuole che la stessa supervisione l'ho realizzata io qualche anno fa, percui ne conosco ogni segreto...la sfortuna però è che il cliente vuole passare da Access ad SQL, in quanto lo ritiene più stabile ed affidabile di access. Io purtroppo di SQL conosco solo il nome e nulla di più :( percui avrei alcune domande, per capire come iniziare a muovermi:

1)SQL è realmente più stabile ed affidabile di Access? e se si MySQL rispetto ad SQL cos'è esattamente?

2)Nel sito MySQL ho trovato un download free di MySQL 5.0, può fare al caso mio?

3)come già detto i software che gestiscono i DB attuali sono stati realizzati in VB, mentre la supervisione è in RSView32 Rockwell Automation, poichè sul sito MySQL ho visto che parla di sorgenti nativi C e non VB, potrò continuare ad usare il mio VB, costato caro, o dovrò passare a VC/VC++?

4)Le operazioni che vengono eseguite sui DB sono le solite: crea, elimina, apri, chiudi, inserisci, cerca, ordina. Passando a SQL dovrò sostituire le funzioni per access con quelle per SQL e basta, oltre a dichiarazioni e quant'altro, oppure devo sapere qualcosa in più su SQL?

5)Quanto tempo, a occhio, potrei dover impiegare, per essere autosufficiente nella programmazione con DB SQL rispetto ad ora (per fare una valutazione dei costi)?

6)Dovrei pormi qualche altra domanda che non mi sto ponendo?

Grazie :)

Link al commento
Condividi su altri siti


Ciao Simbad, tento di darti una risposta ...

prima di tutto ti dico che SQL server della Microsoft è un prodotto di fascia ALTA destinato a database enormi con MOLTI utenti che accedono ai dati contemporaneamente ...

Ci sono varie versioni, e puoi spendere da qualche migliaio di euro, a NIENTE per usarlo !!!

Gratis puoi avere la versione Express di Sql che è MOLTISSIMO.

C'è da dire che Access ha dei tool per creare maschere per vedere/inserire dati, generare report insomma .. da un'interfaccia grafica all'utente. SQL server NO.

Veniamo alle domande ...

1)SQL non è che sia + affidabile, è un prodotto di una categoria diversa, cioè è previsto per GIGABYTE di dati ecc.. , poi ha dei tool per scambiare dati con altri database (Oracle, ecc) , fare dei backup, uno scripting cazzutissimo e un sacco di cose che conosco a mala pena ..

MYSQL è un alterego di SQL server, solo che non ha (almeno che io sappia) interfaccia grafica, cioè lo comandi da Dos con dei comandi in linguaggio Tsql .. Esempio, se devi creare una tabella ... devi scrivere una query di creazione (att.ne, non sono SICURISSIMO di quello che sto dicendo, penso sia così ...)

comunque è gratuito e molto performante.

3)Da VB con ADO ti interfacci a SQL server ... Da RSView non so, ma credo che questo dipenda da Rockwell, comunque credo che tu non abbia problemi. Per i sorgenti nativi, credo tu ti riferisca a quelli di mysql, che non centrano nulla ...

4) In linea di massima si, devi sostituire i comandi facendo attenzione che probabilmente le query cambieranno ... Poi, SQL ha anche le stored procedure oltre alle query ...

5) Guarda, se conosci BENE sql server ti conviene fare il DBadmin ... comunque io per essere autonomo come avresti bisogno di essere tu mi son preso un libro e ho smanettato un paio di settimane . Poi col tempo ho affinato le conoscenze, ma mi ritengo tuttora un newbie di SQL server !!!

6) Secondo me ... gli errori che ti escono su access sono EVITABILISSIMI ... io se fossi in te lavorerei su quelli. Probabilmente ci sono dei campi che vengono modificati da piu client, magari nello stesso momento.

Cosa hai usato in VB per accedere ad access, DAO o ADO ? Se usassi .net avresti MOLTISSIMI problemi in meno e potresti gestire meglio gli errori con le eccezioni, ma questa è tutta un'altra storia ...

Ciao

Link al commento
Condividi su altri siti

Ciao MrC

effettivamente i miei DB access sono circa 10 e complessivamente arrivano ad una dimensione di 3GB. Il mio cliente vuole usare mysql in quanto è gratuito, ho imparato da te che esiste anche SQL server. Quel che ho fatto in VB l'ho fatto in VBprof.6.0 e nei riferimenti ho inserito "Microsoft Access 10.0 Object Library" e "Microsoft DAO 2.5/3.5Compatibility Library". Da RSView32 faccio solo partire degli eseguibili. Gli errori che compaiono non so nemmeno io come gestirli, perchè o compare la finestra di win xp sp2 che ti dice che il programma "RSVIEW32" ha commesso un errore con le opzioni send o no un'send (due pulsanti che ho imparato ad odiare) oppure si pianta il pc e basta senza dire e fare nulla...semplicemente non fa più niente. E pensare che tutto l'installato è installato alle ultime versioni esistenti. Per altro, funziona tutto per giorni e giorni...la produzione compie circa 300-350 cicli al giorno, quindi la supervisione prima di piantarsi compie migliaia di volte le stesse operazioni correttamente, gli stessi eseguibili vengono lanciati centinaia di volte ecc...

Link al commento
Condividi su altri siti

Ciao , volevo chiederti se sei sicuro che i problemi siano dati dalla gestione Access e non dalla comunicazione (visto il tipo di messaggio che indichi).

Per il resto posso dirti che con 10Gb di dati non puoi utilizzare MSDE (la versione free di SQL SERVER) , ma potrebbe andar bene MySQL che ha dei drivers per funzionare come ODBC o OLEDB e volendo passare a NET ci sono dei controlli che te lo integrano come ACCESS o SQL SERVER.

Personalmente avevo fatto solo delle prove con OLEDB e VB6 su una versione vecchia , ma piu' che delle prove di lettura/scrittutra di due dati in croce non avevo fatto.

Ai tempi non c'era molto di interfaccia tipo access per creare la base dati , ma so che esistono dei programmi che ti convertono un tuo file access in MySQL (prova a cercare sul WEB).

Ciao :)

Link al commento
Condividi su altri siti

10 GB !!!

Con questa mole di dati effettivamente ti consiglio anch'io di passare ad un database di grado superiore.

Ma li compatti ogni tanto ? Cioè, ci fai manutenzione nei db ?

MySql è un'ottima scelta, e come dice ifachsoftware, con .net lo gestisci anche comodamente.

Penso comunque che tu non andrai a migrare le tue applicazioni da Vb6 a .NET, e pertanto non so dirti come fare a usare MySql da VB6, boh, cerca con google, magari trovi esempi.

Una cosa che mi fa pensare è che tu dici : "gli stessi eseguibili vengono lanciati centinaia di volte " .

Attenzione: le applicazioni che usano oggetti COM (come Vb6) soffrono di problemi nella gestione della memoria tipici degli oggetti COM, problemi brillantemente risolti dal garbage collector di .NET . Può essere che eseguendo tante volte la stessa applicazione rimangano in memoria oggetti che poi si incasinano tra di loro ... Ti consiglio di cercarti su internet informazioni sul garbage collector di .net .

Link al commento
Condividi su altri siti

Ciao simbad,

Per 10 tabelle di DB con un totale di 3GB significa che il peso di ogni tabella mediamante è di 0,3GB quindi è inutile SQL.

Tieni presente che una tabella di foxpro oppure di dBase ha un limite di 2GB, mentre una tabella di SQL è limitata dalla sola capienza del disco rigido. Il limite dei record per database è di 1.000.000.000.

Piuttosto rivedi, migliora, snellisci e magari ottimizza le query in access c'è qualcosa che non va.

Inoltre se vuoi fare esperienza puoi utilizzare Open Office l'applicativo è il Base (l'interfaccia grafica), con motore MySQL sono entrambi gratuiti.

Poi puoi provare ad installare il programma su un PC che funzioni come file server (non un server ma un semplice PC), in altre parole non deve essere una postazione di lavoro con installato il database e l'applicativo, si sà che maltrattato da un utente il sistema operativo del PC a volte non risponde

Se il tuo cliente vuole massima stabilità allora IBM AS/400 e passa la paura!

Modificato: da Pietro_1
Link al commento
Condividi su altri siti

Siuramente c'è qualcosa che non va... Infatti ci sono dei problemi che devo provare a risolvere... Per fortuna la mia ignoranza in fatto di DB è pari a quella del mio cliente... Non sapevo neppure che i DB si potessero comprimere. Mi piaerebbe capire meglio che cosa vuol dire fare manutenzione su di essi.

Per Pietro_1:

Ogni DB ha almeno 3 tabelle e circa 10-12 query percui il peso medio è circa un terzo di quello che hai indicato tu...poi se è ancora troppo non so...mi potresti dare tu una buona risposta... Inoltre ho detto 10 DB per rendere l'idea, in realtà non ricordo con esattezza il numero dei DB, ma è sicuramente compreso fra 10 e 20. Era giusto per dare un'ordine di grandezza. Se vosse tendente a 20 il peso si ridurrebere ancora ovviamente.

I dati memorizzati possiamo paragonarli a collezioni di parametri di produzione che circa 300-400 volte al giorno vengono memorizzati nel db e vi rimangono per un'anno intero. Alla fina di un anno si inizia a sovrascrivere il DB partendo dal dato più vecchio. Data&Ora è la chive primaria di ricerca. I DB ho detto che

Interessante invece il discorso garbage collector .net di MrC. E pessimo infatti che possano rimanere in memoria degli oggetti. Potrebbe essere però...dovrei passare però a .net? Giusto? o si può integrare in VB6?

Link al commento
Condividi su altri siti

Il Garbage collector è esclusiva di .net

Ovviamente non lo puoi usare con VB6. Prova magari a informarti meglio su questo argomento che è molto importante, specie per chi poi ha bisogno di affidabilità.

Vedi, a volte è troppo semplice dire : Windows si pianta .. perchè fa schifo ... se invece vai a fondo nelle cose capisci anche i problemi, li previeni, e diventi un programmatore migliore ;)

Credo che si possa impostare una compattazione automatica dei db, oppure magari si può fare da vb ...

non so. Ma perchè i dati invece di sovrascriverli non li archivi ?

Ciao

Link al commento
Condividi su altri siti

Perchè quando una materia (DB e prog. di alto livello) la conosci poco e nell'azienda del tuo cliente invece c'è uno pseudo-programmatore che forse ne sa quanto te o forse meno, e questi è pure il figlio del titolare....ecco che succede questo...e siccome di improperi, cambi di idee dell'ultimo secondo e quant'altro ce n'è ogni volta...che vengono poi pagati solo in parte ovviamente...rimane anche poco tempo e poca voglia per approfondire le proprie conoscenze personali...

Morale: è stata un'imposizione

Link al commento
Condividi su altri siti

se ho capito bene ...

hai una serie di database in formato Access a cui ti interfacci con VB,

il cliente vuole passare da Access a SQL Server ...

quì Access è usato solo come base dati

se è così non devi cambiare niente ma solo la base dati

fai la migrazione dall'attuale base dati in Access

alla nuova SQL Server o MSDE (utility di Access)

e ricolleghi l'interfaccia in VB, alla nuova base dati in SQL

VB si collega tranquillamente a SQL Server ..

(che io sappia SQLServer non ha interfaccia)

unico problema e che cambieranno i nomi delle tabelle

(esempio myTabella diventa .. dbo_myTabella)

e quindi dovrai rivedere un po i nomi dei collegamenti ...

oltre altre piccole cose risolvibili con poco sforzo ...

ciao e buon lavoro

Giuseppe

Link al commento
Condividi su altri siti

Si, ok, ma non è così banale il discorso ...

Per fare un lavoro del genere devi mettere in poreventivo un 10 giorni lavorativi di

smanettamenti vari , almeno con la console manager, giusto il minimo ...

Non è una questione di 4-5 ore di lavoro ..

Ciao

Link al commento
Condividi su altri siti

Ciao,

secondo me come ti è stato detto precedentemente piuttosto che concentrarti su Access verifica che non siano altri i problemi.

Per quanto riguarda la migrazione è fattibile ma devi considerare:

1) Se sai poco di Access, prevedi una curva di apprendimento più ripida per SQL Server

2) La migrazione (vista anche l'inesperienza) potrebbe apportare una instabilità ancora più difficile da gestire! SQL Server è difficile da amministare.

3)Molti bug si scoprono con l'utilizzo intensivo piuttosto che con le prove in ufficio. Ti troveresti un'applicazione che ha funzionato in maniera "prevedibile" per un tot di anni e che adesso, magari dopo gg. di lavorazione, presenta problemi nuovi...

Secondo me è più proficuo per tutti e due migliorare l'applicazione così com'è! Ottimizza e normalizza le tabelle cerca di trovare un modo (dove possibile) di "allegerire" la quantità di dati .

Ciao

Link al commento
Condividi su altri siti

  • 6 months later...

Rispondo/confermo alcune frasi estratte dal thread.

D) SQL (MySQL) è realmente più stabile ed affidabile di Access?

R) Sì, è estremamente stabile, estremamente veloce (anche più di Oracle) e soprattutto è molto più affidabile (al momento della creazione del database però devi scegliere il formato giusto). Access è comodo mentre si sviluppa perché non c'è nulla da installare, ha un comando denominato SHAPE che permette di scrivere query gerarchiche molto utile quando si preparano i report. Ma per il resto dà spesso problemi di perdita di dati e le prestazioni degradano vistosamente se usato in concorrenza da 3-4 utenti o più.

D) Nel sito MySQL ho trovato un download free di MySQL 5.0, può fare al caso mio?

R) Forse sì: dipende da cos'hai fatto con Access. Se hai creato dei report che usano il comando SHAPE allora il porting potrebbe diventare lungo anche se non concettualmente difficile

D) MYSQL è un alterego di SQL server, solo che non ha (almeno che io sappia) interfaccia grafica

R) MySQL sipuò usare con tutte le interfacce utente che dispongono del protocollo JDBC (che viene dal mondo Java) oppure ODBC (anche se con prestazioni inferiori).

D) Piuttosto rivedi, migliora, snellisci e magari ottimizza le query in access c'è qualcosa che non va.

R) E' Access che non è ottimizzato per grandi moli di dati. Un miglioramento possibile è quello di creare un indice sulla colonna che contiene la chiave di ricerca.

D) Credo che si possa impostare una compattazione automatica dei db, oppure magari si può fare da vb ...

R) Sì è possibile con un comando che non ricordo ma che se non erro è talmente semplice da non richiedere parametri. La compattazione è necessaria poiché Access per essere più rapido quando impartisci un comando DELETE esegue la cancellazione logica (cioè marca con un flag la riga come cancellata) e solo al momento della compattazione elimina il record tappando il buco così creato.

Ciao

Link al commento
Condividi su altri siti

ilmotoredel2000

Ho letto forse un po' troppo frettolosamente l'argomento, però vorei darti il mio suggerimento.

Intanto quoto in pieno quello che ha scritto Water, però secondo me il problema non è in ACCESS, ma nel sistema operativo e nei possibili conflitti che si possono creare tra le decine di task attivi che si rompono puntualmente le scatole a vicenda.

Se la macchina non è usata per navigare in INTERNET formatta tutto e reinstalla win xp SENZA AGGIORNAMENTI e SENZA SP2, nessun antivirus, firewall e ammennicoli vari; qualcosa mi dice che risolvi il problema.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...