Eseguire la migrazione di un database di Access a SQL Server

Nota: Riteniamo importante fornire il contenuto della Guida più recente non appena possibile, nella lingua dell'utente. Questa pagina è stata tradotta automaticamente e potrebbe contenere errori di grammatica o imprecisioni. L'intento è quello di rendere fruibile il contenuto. Nella parte inferiore della pagina è possibile indicare se le informazioni sono risultate utili. Questo è l'articolo in lingua inglese per riferimento.

Tutti abbiamo dei limiti e un database di Access non fa eccezione. Ad esempio, un database di Access ha un limite di dimensioni di 2 GB e non può supportare più di 255 utenti simultanei. Quindi, quando è il momento per il database di Access di passare al livello successivo, è possibile eseguire la migrazione a SQL Server. SQL Server (sia in locale che in Azure cloud) supporta più grandi quantità di dati, più utenti simultanei e ha una maggiore capacità rispetto al motore di database JET/ACE. Questa guida offre un buon inizio per il viaggio in SQL Server, consente di mantenere le soluzioni di Access front-end create e, auspicabilmente, motiva l'uso di Access per future soluzioni di database. L'Upsize guidato è stato rimosso da Access in Access 2013, quindi ora è possibile usare l'assistente per la migrazione a Microsoft SQL Server (SSMA). Per eseguire correttamente la migrazione, seguire queste fasi.

Fasi della migrazione del database a SQL Server

Prima di iniziare

Nelle sezioni seguenti sono disponibili informazioni sullo sfondo e altre indicazioni utili per iniziare.

Informazioni sui database divisi

Tutti gli oggetti di database di Access possono trovarsi in un unico file di database oppure possono essere archiviati in due file di database: un database front-end e un database back-end. Questa operazione si chiama suddivisione del database ed è progettata per facilitare la condivisione in un ambiente di rete. Il file di database back-end deve contenere solo tabelle e relazioni. Il file front-end deve contenere solo tutti gli altri oggetti, inclusi moduli, report, query, macro, moduli VBA e tabelle collegate nel database back-end. Quando si esegue la migrazione di un database di Access, è simile a un database diviso in quanto SQL Server funge da nuovo back-end per i dati che ora si trovano in un server.

Di conseguenza, è comunque possibile gestire il database di Access front-end con le tabelle collegate alle tabelle di SQL Server. In effetti, puoi derivare i vantaggi dello sviluppo rapido delle applicazioni che un database di Access offre, insieme alla scalabilità di SQL Server.

Vantaggi per SQL Server

È ancora necessario qualche convincente per eseguire la migrazione a SQL Server? Ecco alcuni vantaggi aggiuntivi da considerare:

  • Altri utenti simultanei    SQL Server è in grado di gestire molti più utenti simultanei di Access e minimizza i requisiti di memoria quando vengono aggiunti altri utenti.

  • Maggiore disponibilità    Con SQL Server è possibile eseguire il backup dinamico, incrementale o completo, del database mentre è in uso. Di conseguenza, non è necessario imporre agli utenti di disconnettersi dal database per eseguire il backup dei dati.

  • Prestazioni e scalabilità elevate    Il database di SQL Server in genere viene eseguito meglio rispetto a un database di Access, in particolare con un database di dimensioni terabyte. Inoltre, SQL Server elabora le query in modo molto più rapido ed efficiente elaborando query in parallelo, usando più thread nativi all'interno di un singolo processo per gestire le richieste degli utenti.

  • Sicurezza migliorata    Usando una connessione attendibile, SQL Server si integra con la sicurezza del sistema Windows per garantire un singolo accesso integrato alla rete e al database, sfruttando al meglio entrambi i sistemi di sicurezza. In questo modo è molto più semplice amministrare schemi di sicurezza complessi. SQL Server è lo spazio di archiviazione ideale per informazioni riservate, ad esempio numeri di preVidenza sociale, dati della carta di credito e indirizzi riservati.

  • Recupero immediato    Se il sistema operativo si arresta in modo anomalo o si spegne l'alimentazione, SQL Server può recuperare automaticamente il database in uno stato coerente in pochi minuti e senza alcun intervento di amministratore del database.

  • Uso della VPN    Accesso e reti private virtuali (VPN) non andare d'accordo. Ma con SQL Server, gli utenti remoti possono usare ancora il database front-end di Access su un desktop e il back-end di SQL Server situato dietro il firewall VPN.

Primi passaggi

Ci sono alcuni problemi che possono essere affrontati in anticipo per semplificare il processo di migrazione prima di eseguire SSMA:

  • Aggiungere indici di tabella e chiavi primarie    Verificare che ogni tabella di Access abbia un indice e una chiave primaria. SQL Server richiede a tutte le tabelle di avere almeno un indice e richiede una tabella collegata per avere una chiave primaria, se la tabella può essere aggiornata.

  • Controllare le relazioni di chiave primaria/esterna    Verificare che queste relazioni siano basate su campi con tipi di dati e dimensioni coerenti. SQL Server non supporta colonne unite con tipi di dati e dimensioni diversi nei vincoli FOREIGN KEY.

  • Rimuovere la colonna allegato    SSMA non esegue la migrazione delle tabelle che contengono la colonna Attachment.

Prima di eseguire SSMA, seguire i primi passaggi seguenti.

  1. Chiudere il database di Access.

  2. Verificare che gli utenti correnti connessi al database chiudano anche il database.

  3. Se il database è in formato di file mdb, rimuovere.

  4. Eseguire il backup del database. Per altre informazioni, vedere proteggere i dati con i processi di backup e ripristino.

Suggerimento    È consigliabile installare Microsoft SQL Server Express Edition sul desktop che supporta fino a 10 GB ed è un modo semplice e gratuito per l'esecuzione e la verifica della migrazione.

Suggerimento    Se possibile, usare una versione autonoma di Access. Se è possibile usare solo Office 365, usare il motore di database di Access 2010 per eseguire la migrazione del database di Access quando si usa SSMA. Per altre informazioni, vedere motore di database di Microsoft Access 2010ridistribuibile.

Eseguire SSMA

Microsoft fornisce Microsoft SQL Server Migration Assistant (SSMA) per semplificare la migrazione. SSMA esegue principalmente la migrazione delle tabelle e seleziona query senza parametri. Le maschere, i report, le macro e i moduli VBA non vengono convertiti.

  1. Per eseguire la migrazione di un database con SSMA, scaricare prima di tutto https://www.microsoft.com/en-us/download/details.aspx?id=54255 e installare il software facendo doppio clic sul file msi scaricato. Assicurarsi di installare la versione appropriata di 32 o 64 bit per il computer.

  2. Dopo l'installazione di SSMA, aprirlo sul desktop, preferibilmente dal computer con il file di database di Access.

    È anche possibile aprirla in un computer che ha accesso al database di Access dalla rete in una cartella condivisa.

  3. Seguire le istruzioni per l'inizio in SSMA per ottenere informazioni di base, ad esempio la posizione di SQL Server, il database di Access e gli oggetti da migrare, le informazioni di connessione e se si vogliono creare tabelle collegate.

  4. Se si esegue la migrazione a SQL Server 2016 o versione successiva e si vuole aggiornare una tabella collegata, aggiungere una colonna timestamp selezionando strumenti Revisione > impostazioni di progetto > generale. Per altre informazioni, vedere la tabella collegata di Access per il database SQL-Server restituisce #deleted.

  5. Per impostare tipi di dati precisi, selezionare Review Tools _GT_ Project Settings > mapping di tipo. Ad esempio, se memorizzi solo il testo in inglese, puoi usare il tipo di dati varchar invece di nvarchar .

SQL Server Metadata Explorer visualizza gli oggetti di database di Access e gli oggetti di SQL Server che consentono di esaminare il contenuto corrente di entrambi i database. Queste due connessioni vengono salvate nel file di migrazione se si decide di trasferire altri oggetti in futuro.

Nota    Il processo di migrazione può richiedere del tempo a seconda delle dimensioni degli oggetti di database e della quantità di dati che deve essere trasferita.

Convertire oggetti

SSMA converte gli oggetti di Access in oggetti di SQL Server, ma non li copia subito. SSMA fornisce un elenco degli oggetti seguenti da eseguire la migrazione per decidere se spostarli nel database di SQL Server:

  • Tabelle e colonne

  • Selezionare query senza parametri.

  • Chiavi primarie ed esterne

  • InDici e valori predefiniti

  • Vincoli check (Consenti proprietà colonna a lunghezza zero, regola di convalida delle colonne, convalida tabella)

Come procedura consigliata, usare il report di valutazione di SSMA, che mostra i risultati della conversione, inclusi gli errori, gli avvisi, i messaggi informativi, le stime temporali per l'esecuzione della migrazione e i singoli passaggi di correzione degli errori da eseguire prima di trasferire effettivamente il oggetti.

La conversione degli oggetti di database prende le definizioni di oggetti dai metadati di Access, le converte in una sintassi equivalente a Transact-SQL (T-SQL)e quindi carica queste informazioni nel progetto. È quindi possibile visualizzare gli oggetti SQL Server o SQL Azure e le relative proprietà usando SQL Server o Esplora metadati di SQL Azure.

Per convertire, caricare e eseguire la migrazione di oggetti in SQL Server, seguire questa guida.

Suggerimento    Dopo aver eseguito la migrazione del database di Access, salvare il file di progetto per un uso successivo, in modo da poter eseguire di nuovo la migrazione dei dati per il test o la migrazione finale.

Collegare tabelle

È consigliabile installare la versione più recente dei driver OLE DB e ODBC di SQL Server invece di usare i driver di SQL Server nativi forniti con Windows. I driver più recenti non solo sono più veloci, ma supportano le nuove funzionalità di Azure SQL che i driver precedenti non hanno. È possibile installare i driver in ogni computer in cui viene usato il database convertito. Per altre informazioni, vedere driver Microsoft OLE DB 18 per SQL Server e Microsoft ODBC driver 17 per SQL Server.

Dopo la migrazione delle tabelle di Access, è possibile creare un collegamento alle tabelle in SQL Server che ora ospitano i dati. Il collegamento direttamente da Access offre anche un modo più semplice per visualizzare i dati, invece di usare gli strumenti di gestione di SQL Server più complessi.  È possibile eseguire query e modificare dati collegati a seconda delle autorizzazioni configurate dall'amministratore del database di SQL Server.

Nota    Se si crea un DSN ODBC quando si collega al database di SQL Server durante il processo di collegamento, creare lo stesso DSN in tutti i computer che usano la nuova applicazione.

Per altre informazioni, vedere collegare o importare dati da un database di https://support.office.com/en-us/article/link-to-or-import-data-from-an-azure-sql-server-database-88c0cc2c-21dd-46f5-b74a-0db3613f5166 di Azure SQL Server e importare o collegare dati in un database di SQL Server.

Suggerimento Non dimenticare di usare la gestione tabelle collegate in Access per aggiornare e riconnettere le tabelle in modo conveniente. Per altre informazioni, vedere gestire le tabelle collegate.

Testare e rivedere

Nelle sezioni seguenti vengono descritti i problemi comuni che possono verificarsi durante la migrazione e come gestirli.

Query

Solo le query di selezione vengono convertite; altre query non sono, incluse le query di selezione che accettano parametri. Alcune query potrebbero non essere completamente convertite e SSMA segnala gli errori di query durante il processo di conversione. Puoi modificare manualmente gli oggetti che non vengono convertiti usando la sintassi T-SQL. Gli errori di sintassi possono anche richiedere la conversione manuale di funzioni e tipi di dati specifici di Access in SQL Server. Le differenze comuni per la sintassi SQL includono:

  • Access usa il simbolo asterisco (*) come carattere jolly mentre T-SQL usa la percentuale (%).

  • Access usa le virgolette attorno a nomi di tabella e oggetti. T-SQL può usarle per i nomi di tabella con spazi, ma questa non è una pratica di denominazione standard. Nella maggior parte dei casi, i nomi degli oggetti devono essere rinominati senza spazi, ma le query devono essere riscritte anche per riflettere i nuovi nomi di tabella. Usare le parentesi quadre [] per le tabelle che non possono essere rinominate, ma che non sono conformi agli standard di denominazione.

  • Access aggiunge parentesi aggiuntive intorno ai parametri nelle query, che possono essere rimosse.

  • SQL Server gestisce i valori NULL e la concatenazione di stringhe in modo diverso. Testare le query per verificare che vengano restituiti i valori giusti.

  • Per le istruzioni condizionali, Access USA IIF mentre T-SQL usa spesso CASE, anche se SQL Server 2012 e versioni successive supportano IIf.

  • Diverse funzioni e tipi di dati vengono usati in modo diverso in Access e T-SQL. SSMA deve convertirle per te, ma potrebbe essere necessario apportare altre modifiche manuali.

Tipi di dati

Access e SQL Server hanno tipi di dati simili, ma tenere presente i potenziali problemi seguenti.

Tipo di dati numero grande    Il tipo di dati numero grande archivia un valore numerico non monetario ed è compatibile con il tipo di dati bigint SQL. Puoi usare questo tipo di dati per calcolare in modo efficiente i numeri grandi, ma richiede l'uso del formato di file di database ACCDB di Access 16 (16.0.7812 o versione successiva) e le prestazioni migliori con la versione a 64 bit di Access. Per altre informazioni, vedere uso del tipo di dati numero grande e scegliere tra la versione di Office 64 bit o 32 bit.

Allegato   Il tipo di allegato archivia un file nel database di Access. In SQL Server sono disponibili diverse opzioni da prendere in considerazione. È possibile estrarre i file dal database di Access e quindi considerare l'archiviazione dei collegamenti ai file del database di SQL Server. In alternativa, è possibile usare FILESTREAM o fileTables per conservare gli allegati archiviati nel database di SQL Server.

Collegamento ipertestuale    Le tabelle di Access presentano colonne hyperlink non supportate da SQL Server. Per impostazione predefinita, queste colonne verranno convertite in colonne nvarchar (max) in SQL Server, ma è possibile personalizzare il mapping per scegliere un tipo di dati più piccolo. Nella soluzione di Access è comunque possibile usare il comportamento dei collegamenti ipertestuali nelle maschere e nei report se si imposta la proprietà Hyperlink per il controllo su true.

Campo multivalore    Il campo multivalore di Access viene convertito in SQL Server come campo ntext che contiene il set di valori delimitato. Poiché SQL Server non supporta un tipo di dati multivalore che modella una relazione molti-a-molti, potrebbe essere necessario ulteriore lavoro di progettazione e conversione.

Per altre informazioni sul mapping dei tipi di dati di Access e SQL Server, vedere confrontare tipi di dati.

Nota    I campi multivalore non vengono convertiti e sono stati interrotti in Access 2010.

Visual Basic

Sebbene VBA non sia supportato da SQL Server, tenere presente i possibili problemi seguenti:

Funzioni VBA nelle query    Le query di Access supportano le funzioni VBA sui dati in una colonna di query. Tuttavia, le query di Access che usano funzioni VBA non possono essere eseguite in SQL Server, quindi tutti i dati richiesti vengono passati a Microsoft Access per l'elaborazione. Nella maggior parte dei casi, queste query devono essere convertite in query remote ( query pass-through, stored procedure o visualizzazioni) che vengono eseguite in SQL Server per ottenere prestazioni ottimali.

Funzioni definite dall'utente nelle query    Le query di Microsoft Access supportano l'uso delle funzioni definite nei moduli VBA per l'elaborazione dei dati passati. Le query possono essere query autonome, istruzioni SQL nelle origini record di maschere/report, origini dati di caselle combinate e caselle di riepilogo su maschere, report e campi di tabella e espressioni di regole predefinite o di convalida. SQL Server non può eseguire queste funzioni definite dall'utente. Potrebbe essere necessario riprogettare manualmente queste funzioni e convertirle in stored procedure in SQL Server.

Ottimizzare le prestazioni

Di gran lunga, il modo più importante per ottimizzare le prestazioni con il nuovo SQL Server back-end consiste nel decidere quando usare le query locali o remote. Quando si esegue la migrazione dei dati in SQL Server, si passa anche da un file server a un modello di database client-server di calcolo. Seguire queste linee guida generali:

  • Eseguire piccole query di sola lettura sul client per l'accesso più rapido.

  • Eseguire query lunghe e di lettura/scrittura sul server per sfruttare la maggiore potenza di elaborazione.

  • Ridurre al minimo il traffico di rete con filtri e aggregazioni per trasferire solo i dati necessari.

Ottimizzare le prestazioni nel modello di database del server client

L'applicazione può anche usare funzioni, stored procedure e trigger definiti dall'utente per centralizzare e condividere la logica dell'applicazione, le regole e i criteri aziendali, le query complesse, la convalida dei dati e il codice di integrità referenziale nel server, invece che nel client.

Evitare di eseguire una query che combina una tabella di Access locale e una tabella di SQL Server, spesso denominata query ibrida. Questo tipo di query richiede ancora l'accesso per scaricare tutti i dati di SQL Server nel computer locale e quindi eseguire la query, ma non esegue la query in SQL Server.

Non aprire un recordset di modulo basato su una tabella di grandi dimensioni e disattivare la struttura di spostamento dei record.

Infine, prova ogni query per garantire prestazioni ottimali.

Per altre informazioni, vedere Ottimizzazione guidata motore di database, usare l'Analizzatore prestazioni per ottimizzare un database di Accesse ottimizzare le applicazioni di Microsoft Office Access collegate a SQL Server.

Vedere anche

Guida alla migrazione a database di Azure

Blog di migrazione dati Microsoft

Microsoft Access alla migrazione, alla conversione e al ridimensionamento di SQL Server

Metodi per condividere un database desktop utilizzando SharePoint

Amplia le tue competenze su Office
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa al programma Office Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×