Funzionalità di accesso incompatibili (AccessToSQL)

Non tutte le funzionalità del database di Access sono compatibili con SQL Server. Ad esempio, SQL Server e Access hanno set diversi di parole chiave riservate. Problemi come questi possono impedire una corretta migrazione a SQL Server. Usare la tabella seguente per informazioni sui possibili problemi di migrazione e sulle relative operazioni.

Impostazioni di database o funzionalità che potrebbero influire sulla migrazione

Impostazione o funzionalità del database di Access Problema di migrazione
Tabelle di Access che non hanno un indice univoco. Se viene eseguita la migrazione di una tabella che non dispone di un indice univoco in SQL Server, non è possibile modificare la tabella dopo la migrazione. Ciò può causare problemi di compatibilità delle applicazioni.

Quando si convertono oggetti di database di Access, nella finestra di Output verranno elencate tutte le tabelle di Access che non dispongono di indici univoci.

È possibile configurare Access per aggiungere una chiave primaria nella tabella di SQL Server durante la conversione. Per altre informazioni vedere Impostazioni progetto (Conversione).
Le tabelle di Access hanno colonne di replica. Se viene eseguita la migrazione di una tabella di Access che include colonne di sistema di replica a SQL Server, la funzionalità di replica Jet verrà interrotta dopo la migrazione.

Dopo la migrazione, prendere in considerazione l'uso della replica di SQL Server per mantenere le copie sincronizzate dei database.
Le tabelle di Access con indici univoci contengono più valori Null. Prima della versione 8.13, le tabelle di Access con indici univoci con più valori Null non possono essere trasferite a SQL Server, perché in SQL Server gli indici univoci non consentono più valori Null. La migrazione avrà esito negativo per queste tabelle.

SSMA contrassegnerà questo problema nei report di valutazione. Per creare un report di valutazione, vedere Valutazione degli oggetti di database di Access per la conversione.

Se questo problema esiste, è necessario assicurarsi che la chiave primaria non abbia valori Null duplicati. In alternativa, è necessario rimuovere la chiave primaria o gli indici univoci che contengono più valori Null.
Le tabelle di Access contengono valori di data non compresi nell'intervallo di SQL Server. Il tipo datetime di SQL Server accetta date solo nell'intervallo compreso tra 1 gennaio 1753 e 31 dicembre 9999. Access accetta date nell'intervallo compreso tra 1 gennaio 100 e 31 dicembre 9999.

SSMA contrassegnerà questo problema nei report di valutazione. Per creare un report di valutazione, vedere Valutazione degli oggetti di database di Access per la conversione.

È possibile configurare il modo in cui SSMA risolve le date non comprese nell'intervallo di SQL Server. Per altre informazioni vedere Impostazioni progetto (Migrazione).
Le lunghezze degli indici in Access superano i 900 byte. Gli indici di SQL Server hanno un limite di 900 byte per le dimensioni totali delle colonne chiave di indice. Se le tabelle di Access usano indici di dimensioni maggiori, SSMA visualizzerà un avviso.

Se si continua con la migrazione dei dati, la migrazione potrebbe non riuscire.
I nomi degli oggetti di Access sono parole chiave di SQL Server o contengono caratteri speciali. Access e SQL Server hanno set diversi di parole chiave riservate e caratteri speciali. SQL Server accetterà oggetti denominati usando parole chiave di SQL Server o contenenti caratteri speciali se si usano identificatori tra parentesi quadre o virgolette, ad esempio "select" o [select].p. Per ulteriori informazioni, vedere "Identificatori delimitati" (Motore di database) nella documentazione online di SQL Server.

NOTA: per usare le virgolette per delimitare gli identificatori, SET QUOTED_IDENTIFIER deve essere impostata su ON.

Ad esempio, CREATE TABLE [schema](c1 [FOR]) è un'istruzione valida, anche se schema e FOR sono parole chiave riservate. Inoltre, CREATE TABLE [xxx*yyy](c1 x&y) è un'istruzione valida, anche se il nome della tabella e della colonna contiene i caratteri speciali * e &.

Anche tutte le query che fanno riferimento a tali oggetti devono usare i nomi con parentesi quadre o virgolette. Ad esempio, la query SELECT * FROM schema avrà esito negativo. La query corretta è: SELECT * FROM [schema].

Quando si convertono oggetti di database di Access, il riquadro Output elenca tutte le tabelle di Access che usano parole chiave o caratteri speciali. È possibile modificare le tabelle in Access e quindi rimuovere e aggiungere nuovamente il database; oppure è possibile modificare le query che fanno riferimento a tali oggetti in modo che le query usino parentesi quadre o virgolette per delimitare gli identificatori. Se non si modificano le query, le applicazioni di Access potrebbero restituire errori o avere altri problemi.
Le dimensioni dei campi differiscono nelle relazioni chiave primaria/chiave esterna. SQL Server non supporta la funzionalità Jet per il collegamento di colonne con tipi di dati o dimensioni diversi con vincoli di chiave esterna.

Quando si convertono oggetti di database di Access, nella finestra di Output verranno elencati tutti i vincoli di chiave primaria/chiave esterna che non verranno convertiti in SQL Server. È possibile modificare i tipi di dati e le dimensioni nelle colonne di Access in modo che corrispondano e quindi rimuovere e aggiungere nuovamente il database di Access. In alternativa, è possibile eseguire la migrazione dei dati anche se questi vincoli non verranno creati in SQL Server.
Le tabelle a cui si fa riferimento nelle relazioni di Access non hanno né una chiave primaria né un indice univoco. Access accetta una relazione tra tabelle in cui la tabella a cui si fa riferimento non dispone di una chiave primaria o di un indice univoco. Tuttavia, questa funzionalità non è supportata da SQL Server.

Quando si convertono oggetti di database di Access, nella finestra di Output verranno elencate tutte le tabelle con relazioni ma senza chiave primaria o indice univoco. È possibile modificare le tabelle per aggiungere chiavi primarie o indici univoci e quindi rimuovere e aggiungere nuovamente il database di Access. In alternativa, è possibile eseguire la migrazione dei dati anche se la relazione tra le tabelle verrà interrotta.
Le tabelle di Access hanno colonne di collegamento ipertestuale. SQL Server non supporta le colonne di collegamento ipertestuale. Le colonne vengono invece considerate come colonne memo di Access. Per impostazione predefinita, queste colonne verranno convertite in colonne nvarchar(max) in SQL Server. È possibile personalizzare il mapping. Per altre informazioni, vedere Mapping dei tipi di dati di origine e destinazione.
Le espressioni di regola di convalida o predefinite contengono funzioni di Access che non possono essere convertite in SQL Server o SQL Azure. Le espressioni predefinite o le regole di convalida di Access possono includere funzioni di sistema di Access o funzioni definite dall'utente che non eseguono il mapping a SQL Server o SQL Azure. L'uso di funzioni che non eseguono il mapping a SQL Server o SQL Azure impedirà di caricare le espressioni predefinite o le regole di convalida in SQL Server o SQL Azure.

Vedi anche

Preparazione dei database di Access per la migrazione
Migrazione di database di Access a SQL Server