Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

35
Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL Università degli Studi di Trieste Azienda Alcatel-Lucent Ferroni Fabio Anno 2014/2015 Relatore: Chiar.mo Prof. Maurizio Fermeglia Responsabile Progetto: Ing. Stefano Bonifacio

Transcript of Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

Page 1: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

Migrazione di basi di dati dall’ambiente

MS-Access all’ambiente MS SQL

Università degli Studi di Trieste

Azienda Alcatel-Lucent

Ferroni Fabio

Anno 2014/2015

Relatore: Chiar.mo Prof. Maurizio Fermeglia

Responsabile Progetto: Ing. Stefano Bonifacio

Page 2: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

Indice

1. Introduzione

2. Problematiche

2.1 Da WinXP a Win7 64 bit

2.2 Access come RDBMS

2.3 Architettura db esistenti

3. Possibili soluzioni

3.1 Access 2007 back end – front end

3.2 Sql Server 2008

3.3 MySql

3.4 Confronto e prestazioni

4. Progetto DataBase ScioltiWDM

4.1 Interfaccia e Funzionalità

4.2 Stato dell'arte e Problematiche

4.3 Ristrutturazione

5. Conclusioni

Page 3: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

1. Introduzione

Il seguente documento ha lo scopo di analizzare i principali

problemi e le possibili soluzioni adottate nella migrazione di basi di

dati dall'ambiente MS-Access '97 all'ambiente MS-Sql 2008; tale

analisi verrà impiegata nel medio/breve termine per coadiuvare le

scelte relative alla nuova struttura di gestione di database aziendale

presso l'azienda Alcatel-Lucent della filiale di Trieste.

La necessità di tale migrazione è nata in seguito al cessato supporto di

assistenza tecnica da Microsoft per WindowsXp che garantisce gli

aggiornamenti di sicurezza; lo standard aziendale è passato, dunque,

da un sistema operativo 32 bit, WindowsXp per l'appunto, a Microsoft

Windows Seven 64 bit.

Tale cambiamento ha causato degli impedimenti nel normale

funzionamento del sistema di basi di dati esistente; la difficoltà

principale si riferisce ad una incompatibilità nativa fra

MS-Access'97 e sistemi 64 bit.

La soluzione a tale problema è stata vincolata, per motivi di licenza,

all'utilizzo di MS-Access'07 in modalità Back End – Front End,

MySQL o Microsoft SQL Server 2008.

Il processo di analisi si è sviluppato per fasi, spesso sovrapposte, e

classificate in modo diverso a seconda dei diversi studi:

1

Page 4: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

• Studio delle tecnologie

• Analisi di fattibilità

• Raccolta dei requisiti

• Progettazione

• Test

Non è stato possibile, tuttavia, effettuare il porting in produzione di

tutte le basi di dati aziendali in quanto, data la mole di dati da migrare

e la complessità con cui sono stati progettati i database esistenti, tale

operazione avrebbe richiesto ulteriore tempo, specialmente nella fase

di test.

E' stato scelto di dare un taglio verticale alle varie fasi, cioè gli

argomenti vengono raggruppati per attinenza e non per ordine

cronologico, tale scelta scaturisce dall'obbiettivo che ci si pone:

analizzare i pregi e i difetti dei suddetti tools non tanto in maniera

assoluta, quanto in relazione l'uno con l'altro, evidenziandone

prestazioni, affidabilità e scalabilità.

2

Page 5: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

2. Problematiche

In questo capitolo si trattano le problematiche riscontrate,

tenendo conto solo di quelle inerenti al progetto dal punto di vista

tecnico; si ritiene che complicazioni in itinere di carattere

infrastrutturale piuttosto che organizzativo non siano rilevanti al fine

di questo tipo di analisi.

2.1 Da WinXP a Win7 64 bit

Dall'aprile 2014 Microsoft non garantisce aggiornamenti di

sicurezza per WindowsXp, la stessa azienda comunica:

Yes, Windows XP support is ending on April 8. After April 8, 2014, Windows XP

users will no longer receive new security updates, non-security hotfxes, free or

paid assisted support options, or online technical content updates from

Microsoft. Third parties may provide ongoing support, but it’s important to

recognize that support will not address fxes and security patches in the core

Windows kernel.

Windows XP and Ofce 2003 were great software releases more than a decade

ago, but technology has evolved along with the needs and expectations of your

customers and partners that have already adopted modern platforms and

devices. Companies still on Windows XP are also missing out on tangible

benefts of modernizing their IT investments from dramatically enhanced

security, broad device choice to meet the needs of a mobile workforce, higher

user productivity, and lower total cost of ownership by future-proofng their IT

3

Page 6: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

investments. A 12-year-old operating system can no longer address today’s

business and technology needs nor security threats[I].

Tale cambiamento ha portato ad adottare Windows Seven 64 bit come

standard aziendale.

All'upgrade del sistema operativo ha avuto seguito l'upgrade dei tools

non più nativamente compatibili; con il sistema 64 bit, a titolo

d'esempio, si sarebbe reso necessario eseguire Access'97 come

amministratore, con gli evidenti problemi di sicurezza.

Il primo tentativo di risoluzione si è orientato, dunque, ad esportare

l'intera rete di database in Access'07.

2.2 Access come RDBMS

Per impostazione predefinita, i database creati in Access 2007

sono nel formato di file accdb, a cui in genere viene fatto riferimento

come al formato di file di Access 2007. Questo formato supporta

nuove caratteristiche, come i campi multivalore, le macro di dati e la

pubblicazione in Access Services. È possibile convertire i database

creati in Microsoft Office Access 2003, Access 2002, Access 2000 o

Access 97 nel formato di file accdb. È necessario ricordare, tuttavia,

che un database nel formato di file accdb non può essere aperto o

collegato utilizzando versioni di Access precedenti ad Access 2007.

Inoltre, il formato accdb non supporta la replica né la sicurezza a

livello utente[II], se si converte il file con estensione mdb nel nuovo

formato (file con estensione accdb), tutte le impostazioni relative alla

protezione a livello utente verranno eliminate automaticamente.

4

Page 7: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

La migrazione dei database Access, dalla versione 97 alla 2007, ha

evidenziato chiaramente l’abbassamento prestazionale in termini di

perfomance.

Di seguito un'analisi delle possibili cause ed un elenco di soluzioni in

fase di test per riportare le prestazioni ad un livello accettabile.

CAUSE:

1. Naturale evoluzione della specie

Dallo sviluppo di Access 97 a quello del 2007 sono passati circa

10 anni. In questo lasso temporale l’hardware dei computer ha avuto

un incremento in termini di potenza di calcolo e di quantità di RAM,

oltre che di velocità del bus, di accesso ai dati ecc.. non indifferente.

Incremento evidenziato soprattutto con l’avvento di Windows Vista,

sistema operativo ricordato proprio per il suo massivo consumo di

risorse. Quindi la configurazione standard per uso ufficio, definita da

Microsoft, è passata da una CPU Pentium 4 / Pentium 4 HT a

processori Dual/Quad core e da un quantitativo di memoria RAM di

512 MB alla soglia dei 4GB (Limite che poi ha spinto lo sviluppo dei

processori a 64 bit per poter supportare quantitativi maggiori).

2. Interfaccia grafica.

L’interfaccia grafica è passata da sottile e minimale ad una

piena di colori, effetti transazionali, menu a scomparsa, Ribbon e

Quick Access Toolbar.

Come in tutta la serie Office, Microsoft ha modificato radicalmente

l’interfaccia, influendo sul carico computazionale dei pc.

5

Page 8: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

3. Il motore Database Engine JET.

Il motore JET non è sviluppato e pensato per un utilizzo in rete.

Questo è quanto si legge su alcuni KB (Knowledge Base) della

Microsoft. Questa sua natura fa si che ad ogni richiesta di esecuzione

di una query, di una procedura vba, di una semplice lettura o scrittura

su una tabella, il flusso dati che transita da Access attraverso le varie

maschere alle tabelle del database è enorme.

Sommando a questo l’utilizzo contemporaneo del database da n utenti,

le performance ne risentono parecchio.

POSSIBILI SOLUZIONI:

1. Naturale evoluzione della specie.

Dalle prove fatte si è visto che sui pc con almeno 4 GB di RAM,

la situazione è un po’ meno tragica. Grazie al passaggio a Windows 7,

con il conseguente rinnovamento del parco macchine, si dovrebbe

trarre benefici dall’adeguamento tecnologico, andando così a ridurre il

gap prestazionale tra le applicazioni sviluppate in Access 97 e le

nuove in formato 2003/2007.

2. Interfaccia grafica

Per questo punto purtroppo c’è poco da fare, è una modifica

fatta e voluta da Microsoft, ma anche qui il rinnovamento tecnologico

non può che aiutare.

6

Page 9: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

3. Il motore Database Engine JET.

I consigli ufficiali Microsoft indicano di sviluppare, in un

contesto di rete, sempre e comunque applicativi con logica client

server. Da prove eseguite, si è notato come lo sviluppo di

un'applicazione esterna in VB.NET che preleva il database da una

repository centrale e lo copia in locale sui vari pc, ha dato

miglioramenti evidenti rendendo l’attività lavorativa accettabile.

Si tenga presente che il passaggio alla versione 2007 ha aumentato

drasticamente l’incidenza di database corrotti anche a distanza di

pochi giorni l’uno dall’altro. E’ stato previsto quindi, sempre

all’interno dell’applicativo VB.NET un controllo sull’apertura del

database, ed in caso di errore, l’applicativo provvederà a scaricare una

nuova copia del db dalla repository di rete.

Infine l’applicativo VB.NET prevede anche un controllo sulla

versione del database e provvede ad aggiornarlo in caso di upgrade.

PROBLEMI NOTI NON RISOLTI:

Rimane il problema della dimensione dei database, che in

versione 2003/2007 crescono a dismisura eseguendo query di

modifica.

Il problema purtroppo non è risolvibile se non tramite work-around, in

quanto ci si scontra proprio con un voluto blocco fisico/strutturale dei

file mdb che non possono superare i 2GB di grandezza.

L'aumento delle dimensioni dei database è dato dal fatto che lo spazio

allocato per i record in Access 2007 è maggiore rispetto a quello

allocato in Access '97, quindi eseguendo query di modifica ( INSERT,

UPDATE, DELETE ), lo spazio liberato rimane inutilizzato fin

7

Page 10: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

quando non viene eseguita una compattazione; le attività aziendali

impongono un forte utilizzo di operazioni di cancellazione, update o

inserimento e questo comporta la necessità di effettuare compattazioni

ogni 3 giorni circa, dal momento che i 2GB di grandezza massima dei

database viene esaurito molto velocemente.

2.3 Architettura db esistenti

La struttura di base di dati esistente si presenta complessa;

gli oltre 470 database sono stati realizzati quasi totalmente in

Access'97 e sono stati progettati per un carico di lavoro di un paio di

ordini di grandezza inferiore al lavoro che effettivamente svolgono;

la dimensione massima di un file mdb, inoltre, è di 1 GB, tale

limitazione ha vincolato le scelte implementative portando ad avere

tabelle ripetute, assenza di relazioni fra tabelle e un massiccio utilizzo

di codici VBA.

8

Page 11: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

Collegamento basi di dati

9

Page 12: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

3. Possibili soluzioni

I tentativi di risoluzione ai problemi analizzati nel capitolo

precedente hanno reso necessario il passaggio ad un gestore di

database diverso dall'Access '97.

Per valutare la bontà dei tools a disposizione è stato seguito un

approccio prettamente pratico, basato sull'analisi e sul monitoraggio

del funzionamento dei database esistenti, nella seguente maniera :

. Analisi di compatibilità : Valutazione delle caratteristiche dei tool

riportate dalla Software House mettendole in relazione con le

necessità aziendali.

. Virtualizzazione : Creazione di un ambiente operativo virtuale su cui

effettuare dei test.

. Modifica del codice : Aggiornamento del codice VBA e, dove

possibile, sostituituzione con codice SQL.

10

Page 13: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

3.1 Access 2007 back end – front end

Contrariamente a quanto ci si potrebbe aspettare, la migrazione

dei database da Access '97 alla versione 2007 non è stata

completamente indolore;

la conversione, mediante gli strumenti di conversione nativi, ha

evidenziato problematiche più gravi del previsto, in ordine di

importanza:

1. Con Access 2007, Microsoft ha incrementato le dimensioni dei

database fino ad un max di 2GB, ciononostante si è notato che le basi

di dati tendono a crescere molto più velocemente di come facevano

con Access'97.

Alcune possibili cause:

. MS Access è un tool file-based non transaction-based.

. Le Query, specialmente quelle che richiedono grandi risorse,

occupano molto spazio che non viene recuperato fin quando

non si effettua la compattazione del database

. Locktypes, cursortype e cursorlocation in ADODB possono

occupare molte risorse se intensamente utilizzati.

11

Page 14: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

. Funzioni DAO.

. Come per le query, la creazione di oggetti ( maschere, report,

form etc ) occupa spazio che non verrà recuperato fino alla

compattazione.

2. Per la sicurezza a livello utente in Access 2003 e versioni

precedenti viene utilizzata una combinazione di password e

autorizzazioni, ovvero un insieme di attributi che specifica il tipo di

accesso consentito a un utente ai dati o agli oggetti del database. È

possibile impostare password e autorizzazioni per singoli utenti o

gruppi di utenti. Queste combinazioni di password e autorizzazioni

diventano account di sicurezza che definiscono gli utenti e i gruppi di

utenti ai quali è consentito l'accesso agli oggetti del database. La

combinazione di utenti e gruppi di utenti è a sua volta nota come

gruppo di lavoro, le cui informazioni vengono memorizzate da Access

in un file di informazioni sul gruppo di lavoro stesso. All'avvio, il file

di informazioni sul gruppo di lavoro viene letto da Access che applica

le autorizzazioni in base ai dati contenuti nel file.

Come scelta voluta da parte di Microsoft, tale tipo di sicurezza si è

persa con il passaggio dai formati mdb a accdb.

3. Nell'utilizzo client-server i metodi della classe

System.IO.Filestream non sono riconosciuti come validi;

nel nostro caso si sono trovate incongruenze con i metodi .seek e

.index.

12

Page 15: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

3.2 Sql Server 2008

L'edizione di MS Sql che andremo ad analizzare è la Enterprise

2008, la versione completa della suite MS-SQL.

SQL Server 2008 Enterprise Edition è una piattaforma completa di

gestione dei dati e Business Intelligence, che assicura caratteristiche di

fascia enterprise per la scalabilità , il data warehousing, l'analisi

avanzata e la protezione delle applicazioni business-critical. Questa

edizione rende possibile consolidare i server ed eseguire operazioni

OLTP (Online Transactional Processing) e reporting su larga scala.

Le principali caratteristiche di questo tool sono le seguenti:

.Disponibilità elevata. Garanzia di continuità delle attività di

business, grazie a tecnologie in grado di proteggere i dati da

errori umani e di ridurre al minimo i tempi di inattività per le

operazioni di ripristino di emergenza.

13

Page 16: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

•Prestazioni e scalabilità. Implementazione di un'infrastruttura

dall'efficacia comprovata per la gestione di grandi volumi di

dati e degli elevati carichi di lavoro delle grandi organizzazioni.

•Protezione. Rispetto dei requisiti di privacy e conformità e

disponibilità di funzionalità integrate per la protezione dei dati

dall'accesso non autorizzato.

•Gestibilità. Gestione dell'infrastruttura per mezzo di

funzionalità automatiche di diagnostica, ottimizzazione e

configurazione che abbattono i costi operativi, riducendo le

operazioni di manutenzione e consentendo la gestione di grandi

quantità di dati.

•Business Intelligence. Semplicità di esecuzione di query e

analisi di grandi quantità di informazioni nei data warehouse e

data mart per ottenere informazioni di business traducibili in

azione[III].

TRANSACT-SQL

La caratteristica che differenzia principalmente Sql Server dagli

altri DBMS è il TSql.

In informatica Transact-SQL ( T-SQL ) è l'estensione proprietaria del

linguaggio SQL sviluppata da Microsoft e Sybase.

Transact-SQL espande le prestazioni di SQL aggiungendo:

•Funzioni per controllo di flusso;

•Possibilità di definire variabili locali.

14

Page 17: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

•Varie funzioni per la manipolazione di stringhe, date, espressioni

matematiche.

•Miglioramento delle istruzioni DELETE e UPDATE.

3.3 MySql

MySql offre, come SQL Server, delle edizioni gratuite e altre

coperte da licenza; in questo documento riteniamo utile analizzare la

versione Enterprise di MySql, cioè la versione a pagamento;

tale considerazione deriva dal fatto che in nessun modo la versione

freeware di MySql potrebbe essere utilizzata in ambito aziendale per

le evidenti limitazioni a cui si andrebbe incontro.

MySQL o Oracle MySQL è un Relational Database Management

System (RDBMS) composto da una parte client e una server.

Le caratteristiche di questo tool possono essere riassunte nei seguenti

punti:

. Scalabilità e flessibilità: MySQL ha la capacità di integrarsi

15

Page 18: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

con applicazioni le cui dimensioni non superano pochi MB,

fino ad enormi data warehouse contenenti terabyte di informazioni.

La flessibilità di piattaforma è una funzionalità chiave di MySQL,

che è in grado di supportare Linux, UNIX e Windows. Inoltre la

natura open source di MySQL consente di personalizzare il server

database.

. Prestazioni : L’architettura storage-engine consente di

configurare il server di MySQL per applicazioni specifiche, per

mezzo di utility di caricamento dati ad alta velocità, le cache

specializzate, gli indici full text ed altri meccanismi di

aumento delle prestazioni.

. Supporto delle transazioni: Le funzionalità di MySql

includono il supporto per transazioni ACID (Atomic,

Consistent, Isolated, Durable), lock a livello di riga, gestione

delle transazioni distribuite e supporto per transazioni

multiversione in cui chi legge non blocca mai chi scrive e

viceversa. L' integrità dei dati è garantita anche dall’integrità

referenziale controllata dal server, dai livelli di isolamento delle

transazioni specializzate e dall’individuazione dei deadlock.

. Protezione dei dati: L’autenticazione del database

assicura la possibilità di verificare gli utenti fino al livello

macchina client.

MySql supporta protocolli SSH e SSL che garantiscono la

sicurezza delle connessioni.

Le utility di backup e ripristino fornite da MySQL e da software

di terze parti consentono di eseguire il backup fisico e logico

16

Page 19: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

completo, così come il ripristino completo e point-in-time.

3.4 Confronto e prestazioni

Il confronto che intendiamo effettuare è impostato sulla ricerca

di affidabilità, sicurezza, velocità e semplicità di utilizzo.

A parità di caratteristiche si terrà conto dei costi di licenza.

Da quanto emerso dal capitolo precedente si ritiene inutile includere

nel suddetto confronto Microsoft Access 2007 in quanto inadatto ad

una realtà aziendale.

Schematizzando:

Caratterstiche MS-Sql Server MySql

Sistema operativo Windows Windows, Linux,

Unix, Mac

Drivers Gia presenti No

Drivers ODBC, JDBC,

ADO.NET

Si Si

OleDb Si No

Viste di sola lettura Si Si

Prodotti opensource

associati

Pochi

(codeplex, .net)

Molti

Viste Aggiornabili Si, anche attraverso

Triggers

Si, non supporta l'uso

dei Triggers per

l'aggiornamento delle

17

Page 20: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

viste

Viste indicizzabili Si No

View designer grafico Si No

Campi calcolati Si No

Indici basati su

funzioni

No – ma è possibile

creare campi calcolati

e creare un indice su

di essi

No

A.C.I.D Si Solo alcuni motori di

archiviazione – es.

InnoDb si, MyIsam

no

Chiavi esterne,

DELETE/UPDATE in

cascata

Si InnoDb si, MyIsam

no

Inserimento multi-riga Si Si

Stored procedures/

funzioni

Si, nativamente Si, terze parti

Triggers Si Si

Set e Table returning

function che possono

essere utilizzate nella

clausola FROM

Si No

Tool di gestione

Grafico

Si, Sql menagement

studio

No

Accedere a tabelle da

altri database nello

stesso Server

Si –

server.db.schema.

Table

anche su altri server

Si – db.table, ma non

su altri server

Autenticazione Standard db security Standard db security,

18

Page 21: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

e NT / Active

Directory

Authentication

controllo degli IP

WITH ROLLUP Si Si

WITH CUBE Si No

Schema Si No

CROSS APPLY Si No

COUNT(DISTINCT)

AGGREGATE(DISTI

NCT)

Si Si

Funzioni OVER …

PARTITION BY

Si No

Limiti Dimensioni

Database

No No

SQL Data Type[IV]:

MS-Sql Server MySql

Boolean Bit N/A

Integer Int Int – Integer

Float Float – Real Float

Currency Money N/A

String ( fissa ) Char Char

String ( variabile ) Varchar Varchar

Binary object Binary – Varbinary –

Image

Blob - Text

19

Page 22: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

4. Progetto DataBase ScioltiWDM

ScioltiWDM è uno dei circa 470 database ufficiali aziendali; si occupa principalmente di monitorare le camere termiche, ovvero le camere che testano il funzionamento delle schede hardware prodotte, atemperature estreme.

4.1 Interfaccia e Funzionalità

Per obblighi di riservatezza concordati con i responsabili di questo documento di tesi in azienda, non è possibile entrare troppo nello specifico sul funzionamento dell'apparato produttivo; nel seguitoalcune funzionalità di ScioltiWDM verranno deliberatamente omesse, altre non verranno spiegate e altre spiegate in parte; tale atteggiamentonon precluderà comunque la comprensione dell'attività svolta.ScioltiWDM ha una struttura visuale abbastanza semplice, è compostoessenzialmente da 3 maschere :

. La maschera principale :

20

Page 23: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

è composta da 3 sezioni disposte in verticale: la parte in alto permette di scegliere il tipo di apparato, la parte centrale permette di avere informazioni su una determinata scheda a partire dal codice ALU o dal codice Telettra e la parte in basso che permettere di accedere alle maschere secondarie.

. Maschera “Ricerca TRS Archiviati”:

Questa maschera serve per la ricerca di TRS archiviati partendo dalla matricola; da, inoltre, la possibilità di stampare il documento o inviarlo via mail.Per TRS si intende una particolare formattazione di un report atta a farrisaltare gli errori avvenuti durante la catena di test.

21

Page 24: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

. Maschera di gestione delle camere :

Questa maschera si occupa del monitoraggio delle attività delle camere termiche; nell'area in bianco a destra sono elencate le schede attualmente in fase di test nella camera 1, per ogni scheda viene specificato il numero seriale, la data e l'ora in cui è iniziato il test e la presenza o meno di errori.

4.2 Stato dell'arte e Problematiche

ScioltiWDM, come tutti gli altri database aziendali, è stato costruito per rispondere a necessità di carattere marginale; nel corso degli anni è stato modificato fino ad ottenere un ruolo fondamentale nella produzione.

Tale approccio di sviluppo si riflette nella struttura del database:

i) Non esiste una progettazione concettuale ne una progettazione logica, dunque non sono definite relazioni fra tabelle ne chiavi primarie o esterne.

22

Page 25: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

ii) Le tabelle sono ripetute :

Il prefisso “Arc” indica che si tratta di un archivio, “ALU”, “BA”, “CC” etc indicano il reparto di competenza e il suffisso numerico indica l'anno di riferimento.Ad esempio la tabella Arc_EZ_00 è un archivio del settore indicato con la sigla EZ dell'anno 2000.Tutte le tabelle “Arc” hanno la stessa struttura, gli stessi campi e svolgono lo stesso ruolo all'interno del database.Il prefisso delle matricole indica la tabella e l'anno di appartenenza, adesempio una matricola del tipo EZ140000001 appartiene alla tabella Arc_EZ_14.Durante l'esecuzione di una query il codice VBA seleziona una tabellafacendo il parsing della matricola di riferimento e, quindi, creando le relazioni fra le tabelle in maniera dinamica.

iii) Le query sono gestite da codice VBA e, nel codice, gli elementi hanno conservato il nome di default assegnato da Access:agli oggetti delle maschere ci si riferisce con nomi del tipo Elenco0, Casella13 etc.

Di seguito è riportata la porzione di codice che gestisce il parsing delle

23

Page 26: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

matricole:

Public Function Check_matricola(matricola As String) As String

Set tabella = arc.OpenRecordset("Struttura_Tabelle")

Struttura_Tabelle è una tabella che contiene informazioni relative agli archivi presenti nel database; ogni record ha un campo Nome_tabella e un campo Intestazione.

Il codice VBA analizza le matricole e verifica che la stringa 'matricola'contenga una delle intestazioni presenti nella tabella Strutture_Tabelle;

matr_EZ_Ok = True If Len(matricola) <> 11 Then Select Case Mid(matricola, 1, 2) Case "BA" temp = "Arc_BA" Case "AL" tabella.MoveFirst i = 1 Do If Mid(matricola, 1, 6) = tabella![Intestazione] Then temp = tabella![nome_ tabella] matr_EZ_Ok = True Else matr_EZ_Ok = False End If tabella.MoveNext i = i + 1

24

Page 27: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

Loop Until (matr_EZ_Ok Or i = num_tabelle + 1)

tabella.Close If matr_EZ_Ok = False Then temp = "Arc_MIX"

Il parsing delle matricole avviene per mezzo della funzione Mid()che ha come parametri la variabile matricola e l'intervallo da esaminare; la variabile matr_EZ_Ok serve a verificare che il matching matricola/tabella sia avvenuto, dunque il codice seleziona le prime 2 lettere della matricola e le compara con il campo intestazione della tabella Struttura_Tabelle; nel caso in cui sia presente l'anno di riferimento, il codice avvia un ciclo per eseguire un matching con i primi 6 caratteri della matricola.Se la tabella viene trovata, viene assegnato alla variabile temp la stringa contenente il nome della tabella, altrimenti si fa restituire alla funzione Check_matricola una stringa di errore.

La funzione Check_matricola viene richiamata nella fase preliminare di tutte le operazioni di SELECT, DELETE e UPDATE dei record di una qualsiasi tabella di archivio.

25

Page 28: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

4.3 Ristrutturazione

La fase di ristrutturazione rappresenta uno stadio intermedio fra quello che doveva essere una completa riprogettazione del sistema di database e il vecchio sistema Access-based.Tale fase si è resa necessaria a fronte di obblighi operativi che includevano la non interruzione del servizio offerto da ScioltiWDM e la necessità di avere un sistema funzionante dopo l'imminente aggiornamento a Windows Seven;si è proceduto, dunque, per soluzioni progressive che possiamo raggruppare in 2 fasi:

• Rimozione delle ridondanze

• Migrazione della base di dati in SQL Server

I) Rimozione delle ridondanze:

In questa fase si è tentato di normalizzare la base di dati:le 38 tabelle relative all'archiviazione sono state rimpiazzate da un'unica tabella con la stessa struttura di campi adottata dalle precedenti tabelle, è stato aggiunto il campo “Reparto” per distinguerei vari reparti e, quindi le varie matricole, in cui si divide la catena di produzione, il campo data è già presente quindi non è stato necessario aggiungere un ulteriore campo per lo store degli anni di archiviazione;un'operazione analoga è stata effettuata per le tabelle “Cicli”.Sono state completamente rimosse o accorpate tabelle che presentano un solo campo.Sono state eliminate, inoltre, le tabelle che in tale fase hanno perso di utilità, ovvero le tabella “Struttura_tabelle”, “Ricerca_matricole” , “Camera” , “Cerca” etc.

26

Page 29: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

Dopo la fase I

Prima della fase I

Sono state aggiunte le chiavi primarie ed è stato realizzato il diagramma delle relazioni.Quasi tutte le tabelle non presentavano chiavi primarie naturali, ovvero i campi necessitavano la ripetizione dei record, in queste occasioni è stato aggiunto il campo Id.

27

Page 30: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

II) Migrazione della base di dati in SQL Server

La migrazione in SQL Server 2008 è stata gestita con il tool fornito da Access 2007; sotto lascheda “Database Tools”, il wizardabilita la creazione di un nuovodatabase sul server, le tabellevengono spostate interamente inback-end e le tabelle in front-endpuntano al server attraverso unaconnessione ODBC.

28

Page 31: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

5. Conclusioni

Anche se nella parte di progetto non è stato possibile coprire

tutti gli obiettivi posti all'attività di tesi, i seguenti aspetti sono stati

analizzati e completati compiutamente: l'analisi di fattibilità è andata

in porto con successo, il progetto, invece, che comprendeva la

migrazione di un database, è stata eseguita in parte:

. E' stato eseguito lo studio del codice sorgente e il

funzionamento delle varie maschere.

. E' stato realizzato il porting da Access '97 ad Access 2007.

. Sono stati individuati i principali errori di funzionamento del

del database migrato in ambito Client-Server.

. Sono stati corretti gli errori individuati nel punto precedente

nel 20% delle funzioni a titolo di esempio.

. E' stata effettuata la migrazione da Access 2007 a SQLServer

2008

. Sono stati effettuati test di funzionamento in mono-utenza e

multi-utenza.

. Non è stata completata la correzione degli errori e il porting in

29

Page 32: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

produzione.

Ci riteniamo ugualmente soddisfatti dei risultati ottenuti; i tempi

misurati, seppur utilizzando come Server una macchina standard

aziendale, hanno riportato delle prestazioni ottime, uguali e in alcuni

casi migliori del DBMS attualmente in uso.

Il seguente grafico riporta le informazioni ottenute; sull'asse delle

ascisse è riportato il numero di misurazioni effettuate, sull'asse delle

ordinate il tempo calcolato in secondi delle suddette misurazioni.

Sono state effettuate un totale di 6 rilevamenti per ogni settore, il

migliore e il peggior tempo sono stati scartati, i restanti 4 tempi sono

rappresentati nel grafico sottostante; tale procedimento si è reso

necessario per minimizzare l'errore di misurazione effettuato

attraverso un cronometro digitale.

ScioltiWDM, il database utilizzato per i test, all'apertura effettua la

sincronizzazione di milioni di record prima di essere operativo, tale

operazione è la più pesante che effettua, per questo motivo si è

ritenuto opportuno misurare il tempo di operatività come modello di

valutazione precauzionale.

30

Page 33: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

Come possiamo vedere dalla tabella sottostante, i tempi riportati dalle diverse zone in cui si divide l'azienda sono più o meno omogenei intorno ai 2 secondi, fatta eccezione per la zona P4 dove con Access 2007 si è toccato il picco di circa 24 secondi.

Dalle argomentazioni riportate in questo documento, ritengo che SqlServer 2008 sia la scelta migliore per la futura migrazione.Tale considerazione deriva da un'analisi completa fra ciò che è già presente ( infrastrutture, database esistenti ), ciò che si vuole ottenere

31

1 2 3 4 5 60

5

10

15

20

25 MediaAccess

Media SQLServer

Misurazioni

Se

con

di

Zona Prima Seconda Terza Quarta Media AccessP1 1,82 2,01 1,93 1,71 1,8675P2 1,78 2,31 2,21 2,36 2,165P2 est 1,32 1,35 1,45 1,28 1,35P4 23,81 21,97 22,89 22,38 22,7625P4 ovest 3,42 3,82 4,12 3,58 3,735P8 1,89 1,68 1,77 1,49 1,7075

Zona Prima Seconda Terza Quarta Media SQL ServerP1 1,45 1,87 1,65 1,65 1,655P2 1,56 1,99 1,89 2,01 1,8625P2 est 1,45 1,29 1,97 2,19 1,725P4 7,11 7,21 8,34 8,23 7,7225P4 ovest 2,25 2,04 2,34 2,91 2,385P8 1,89 1,25 1,71 1,65 1,625

Page 34: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

( funzionamento della rete di base di dati con prestazioni adatte all'utilizzo che se ne deve fare ) e i mezzi a disposizione;

MySql non si è dimostrato molto al di sotto delle richieste, ma con un costo di licenza annuale che si aggira intorno ai 5000 dollari, considerate le limitazioni nella parte implementativa ( funzioni, triggers per viste, tool di gestione grafico etc ) e considerando l'ergonomia nativa fra prodotti Microsoft, sceglierei l'affidabilità di unDBMS come SQL Server 2008; anche nella sua più recente versione SQL Server 2014.

BIBLIOGRAFIA

32

Page 35: Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

[I] http://www.neowin.net/news/windows-xp-support-ends-in-90-days-microsoft-remains-firm-on-deadline[II] https://support.office.com/it-it/article/Convertire-un-database-nel-formato-di-file-con-estensione-accdb-69abbf06-8401-4cf3-b950-f790fa9f359c[III]https://www.microsoft.com/italy/server/sql/2008/prodinfo/enterprise.mspx[IV] http://www.people.vcu.edu/~agnew/Misc/MySQL-MS-SQL.HTML

33