Il collegamento alle applicazioni di accesso di SQL Server: database SQL di Azure (AccessToSQL)Linking Access applications to SQL Server - Azure SQL DB (AccessToSQL)

Se si desidera utilizzare le applicazioni Access esistenti con SQL ServerSQL Server, è possibile collegare le tabelle di Access originale dopo la migrazione SQL ServerSQL Server o tabelle di SQL Azure.If you want to use your existing Access applications with SQL ServerSQL Server, you can link your original Access tables to the migrated SQL ServerSQL Server or SQL Azure tables. Collegamento di modifica nel database di Access in modo che i dati di utilizzare pagine di accesso ai dati, moduli, report e query di SQL ServerSQL Server o database di SQL Azure anziché i dati nel database di Access.Linking modifies your Access database so that your queries, forms, reports, and data access pages use the data in the SQL ServerSQL Server or SQL Azure database instead of the data in your Access database.

Nota

Le tabelle di Access rimangono in Access, ma non vengono aggiornate con SQL ServerSQL Server o gli aggiornamenti di SQL Azure.Your Access tables remain in Access, but are not updated together with SQL ServerSQL Server or SQL Azure updates. Dopo si collegano le tabelle e verificare la funzionalità, è possibile eliminare le tabelle di Access.After you link the tables and verify functionality, you might want to delete your Access tables.

Il collegamento delle tabelle di Access e SQL ServerLinking Access and SQL Server tables

Quando si collega una tabella di accesso per un SQL ServerSQL Server o tabella di SQL Azure, il motore di database Jet archivia le informazioni di connessione e i metadati della tabella, ma i dati vengono archiviati SQL ServerSQL Server o SQL Azure.When you link an Access table to a SQL ServerSQL Server or SQL Azure table, the Jet database engine stores connection information and table metadata, but the data is stored in SQL ServerSQL Server or SQL Azure. Questo collegamento consente le applicazioni Access funzionano a fronte delle tabelle del database anche se le tabelle effettive e i dati sono SQL ServerSQL Server o SQL Azure.This linking allows your Access applications operate against the Access tables even though the actual tables and data are in SQL ServerSQL Server or SQL Azure.

Nota

Se si utilizza SQL ServerSQL Server l'autenticazione, la password viene archiviato in testo non crittografato in tabelle collegate di Access.If you use SQL ServerSQL Server Authentication, your password is stored in clear text on the linked Access tables. È consigliabile utilizzare l'autenticazione di Windows.We recommend using Windows Authentication.

Per collegare le tabelleTo link tables

  1. In Visualizzatore metadati di accesso, selezionare le tabelle che si desidera collegare.In Access Metadata Explorer, select the tables that you want to link.

  2. Fare doppio clic su tabelle, quindi selezionare collegamento.Right-click Tables, and then select Link.

SQL ServerSQL ServerMigration Assistant (SSMA) per l'accesso viene eseguito il backup della tabella di accesso originale e crea una tabella collegata. Migration Assistant (SSMA) for Access backs up the original Access table and creates a linked table.

Dopo aver collegato le tabelle, le tabelle in SSMA vengono visualizzati con un'icona di collegamento di piccole dimensioni.After you link the tables, the tables in SSMA appear with a small link icon. In Access, le tabelle vengono visualizzati con un'icona di "collegata", ovvero un globo con una freccia con punta a esso.In Access, the tables appear with a "linked" icon, which is a globe with an arrow pointing to it.

Quando si apre una tabella in Access, i dati vengono recuperati utilizzando un cursore keyset.When you open a table in Access, the data is retrieved using a keyset cursor. Di conseguenza, per le tabelle di grandi dimensioni, tutti i dati non vengono recuperati contemporaneamente.As a result, for large tables, all the data is not retrieved at one time. Tuttavia, durante l'esplorazione tramite la tabella, accesso recupera dati aggiuntivi in base alle esigenze.However, as you browse through the table, Access retrieves additional data as necessary.

Importante

Per collegare le tabelle di access con un database di Azure, è necessario Client(SNAC) nativo di SQL Server versione 10.5 o versione successiva.To link access tables with an Azure database, you need SQL Server Native Client(SNAC) version 10.5 or above.
È possibile ottenere la versione più recente di SNAC da Microsoft® SQL Server® 2008 R2 Feature Pack.You can obtain the latest version of SNAC from Microsoft® SQL Server® 2008 R2 Feature Pack.

Scollegamento di tabelle di AccessUnlinking Access tables

Quando si scollega una tabella di Access da un SQL ServerSQL Server o tabella di SQL Azure, SSMA consente di ripristinare la tabella di accesso originale e i relativi dati.When you unlink an Access table from a SQL ServerSQL Server or SQL Azure table, SSMA restores the original Access table and its data.

Per eliminare il collegamento delle tabelleTo unlink tables

  1. In Visualizzatore metadati di accesso, selezionare le tabelle che si desidera scollegare.In Access Metadata Explorer, select the tables that you want to unlink.

  2. Fare doppio clic su tabelle, quindi selezionare Scollega.Right-click Tables, and then select Unlink.

Collegamento delle tabelle in un altro serverLinking tables to a different server

Se sono state collegate delle tabelle del database a un'istanza di SQL Server e in seguito si desidera modificare i collegamenti a un'altra istanza, è necessario collegare nuovamente le tabelle.If you have linked the Access tables to one SQL Server instance and you later want to change the links to another instance, you must relink the tables.

Per collegare le tabelle in un altro serverTo link tables to a different server

  1. In Visualizzatore metadati di accesso, selezionare le tabelle che si desidera scollegare.In Access Metadata Explorer, select the tables that you want to unlink.

  2. Fare doppio clic su tabelle e quindi selezionare Scollega.Right-click Tables and then select Unlink.

  3. Fare clic su di Riconnetti a SQL Server pulsante.Click the Reconnect to SQL Server button.

  4. Connettersi all'istanza di SQL ServerSQL Server o a cui si desidera collegare le tabelle di accesso di SQL Azure.Connect to the instance of SQL ServerSQL Server or SQL Azure to which you want to link the Access tables.

  5. In Visualizzatore metadati di accesso, selezionare le tabelle che si desidera collegare.In Access Metadata Explorer, select the tables that you want to link.

  6. Fare doppio clic su tabelle, quindi selezionare collegamento.Right-click Tables, and then select Link.

Aggiornamento delle tabelle collegateUpdating linked tables

Se il SQL ServerSQL Server o le definizioni delle tabelle di SQL Azure vengono modificati, è possibile scollegare e quindi collegare le tabelle in SSMA nuovamente utilizzando le procedure illustrate in precedenza in questo argomento.If the SQL ServerSQL Server or SQL Azure table definitions are altered, you can unlink and then re-link the tables in SSMA by using the procedures shown previously in this topic. È inoltre possibile aggiornare le tabelle utilizzando l'accesso.You can also update the tables by using Access.

Per aggiornare le tabelle collegate tramite accessoTo update linked tables by using Access

  1. Aprire il database di Access.Open the Access database.

  2. Nel oggetti elenco, fare clic su tabelle.In the Objects list, click Tables.

  3. Fare doppio clic su una tabella collegata e quindi selezionare Gestione tabelle collegate.Right-click a linked table, and then select Linked Table Manager.

  4. Selezionare la casella di controllo accanto a ogni tabella collegata che si desidera aggiornare e quindi fare clic su OK.Select the check box next to each linked table that you want to update, and then click OK.

Possibili problemi di post-migrazionePossible post-migration issues

Le sezioni seguenti problemi di elenco che si verificano in applicazioni Access esistenti dopo la migrazione di database da Access a SQL ServerSQL Server o SQL Azure e quindi collegare le tabelle, nonché le cause e le risoluzioni.The following sections list issues that might occur in existing Access applications after you migrate databases from Access to SQL ServerSQL Server or SQL Azure and then link the tables, together with the causes and the resolutions.

Rallentamento delle prestazioni con le tabelle collegateSlow performance with linked tables

Causa: alcune query può essere lenta dopo upsizing per i motivi seguenti:Cause: Some queries might be slow after upsizing for the following reasons:

  • L'applicazione dipende dalle funzioni che non esistono in SQL ServerSQL Server o SQL Azure, provocando Jet per tabelle in locale per eseguire una query di selezione a discesa.The application depends on functions that do not exist in SQL ServerSQL Server or SQL Azure, which causes Jet to pull down tables locally to run a SELECT query.

  • Le query che aggiornano o eliminano molte righe vengono inviate da Jet come una query con parametri per ogni riga.Queries that update or delete many rows are sent by Jet as a parameterized query for each row.

Risoluzione: convertire le query con esecuzione prolungata in viste, stored procedure o query pass-through.Resolution: Convert the slow-running queries to pass-through queries, stored procedures, or views. La conversione in una query pass-through presenta i seguenti problemi:Converting to pass-through queries has the following issues:

  • Query pass-through non può essere modificata.Pass-through queries cannot be modified. Modifica il risultato della query o l'aggiunta di nuovi record deve essere effettuata in un modo alternativo, ad esempio richiedendo esplicita modifica o Aggiungi pulsanti nel form di cui è associato alla query.Modifying the query result or adding new records must be done in an alternative way, such as by having explicit Modify or Add buttons on your form that is bound to the query.

  • Alcune query richiedono l'input dell'utente, ma le query pass-through non supportano l'input dell'utente.Some queries require user input, but pass-through queries do not support user input. Da Visual Basic per il codice richiesto per i parametri Applications (VBA) o da un modulo viene utilizzato come un controllo di input, è possibile ottenere l'input dell'utente.User input can be obtained by Visual Basic for Applications (VBA) code that prompts for parameters, or by a form that is used as an input control. In entrambi i casi, il codice VBA invia la query con l'input dell'utente al server.In both cases, the VBA code submits the query with the user input to the server.

Colonne a incremento automatico non vengono aggiornate finché non viene aggiornato il recordAuto-increment columns are not updated until the record is updated

Causa: dopo la chiamata a RecordSet.AddNew Jet, la colonna a incremento automatico è disponibile prima che il record viene aggiornato.Cause: After calling RecordSet.AddNew in Jet, the auto increment column is available before the record is updated. Ciò non è possibile in SQL ServerSQL Server o SQL Azure.This is not true in SQL ServerSQL Server or SQL Azure. Il nuovo valore il nuovo valore della colonna identity è disponibile solo dopo aver salvato il nuovo record.The new value of the identity column new value is available only after saving the new record.

Risoluzione: nell'esempio di Visual Basic, Applications Edition (VBA) di eseguire prima l'accesso al campo di identità:Resolution: Run the following Visual Basic for Applications (VBA) code before accessing the identity field:

Recordset.Update  
Recordset.Move 0,  
Recordset.LastModified  

Nuovi record non sono disponibiliNew records are not available

Causa: quando si aggiunge un record per un SQL ServerSQL Server o una tabella di SQL Azure utilizzando VBA, se il campo della tabella dell'indice univoco ha un valore predefinito e non si assegna un valore per tale campo non viene visualizzato il nuovo record fino a quando non si riapre la tabella in SQL ServerSQL Server o SQL Azure.Cause: When you add a record to a SQL ServerSQL Server or SQL Azure table by using VBA, if the table's unique index field has a default value and you do not assign a value to that field, the new record does not appear until you reopen the table in SQL ServerSQL Server or SQL Azure. Se si tenta di ottenere un valore del nuovo record, è visualizzato il messaggio di errore seguente:If you try to obtain a value from the new record, you receive the following error message:

Run-time error '3167' Record is deleted.

Risoluzione: quando si apre il SQL ServerSQL Server o SQL Azure tramite il codice VBA di tabella, includere il dbSeeChanges opzione, come nell'esempio seguente:Resolution: When you open the SQL ServerSQL Server or SQL Azure table by using VBA code, include the dbSeeChanges option, as in the following example:

Set rs = db.OpenRecordset("TestTable", dbOpenDynaset, dbSeeChanges)

Dopo la migrazione, alcune query non consentirà all'utente di aggiungere un nuovo recordAfter migration, some queries will not allow the user to add a new record

Causa: se una query non include tutte le colonne incluse in un indice univoco, è possibile aggiungere nuovi valori utilizzando la query.Cause: If a query does not include all columns that are included in a unique index, you cannot add new values by using the query.

Risoluzione: verificare che tutte le colonne incluse in almeno un indice univoco facciano parte della query.Resolution: Ensure that all columns included in at least one unique index are part of the query.

Non è possibile modificare uno schema di tabella collegata con accessoYou cannot modify a linked table schema with Access

Causa: dopo la migrazione dei dati e le tabelle di collegamento, l'utente non è possibile modificare lo schema di una tabella di accesso.Cause: After migrating data and linking tables, the user cannot modify the schema of a table in Access.

Risoluzione: modificare lo schema della tabella utilizzando SQL Server Management StudioSQL Server Management Studioe quindi aggiornare il collegamento di accesso.Resolution: Modify the table schema by using SQL Server Management StudioSQL Server Management Studio, and then update the link in Access.

Causa: dopo la migrazione dei dati, i collegamenti ipertestuali nelle colonne perdono le proprie funzionalità e sarà più facile nvarchar (max) colonne.Cause: After migrating data, hyperlinks in columns lose their functionality and become simple nvarchar(max) columns.

Risoluzione: nessuno.Resolution: None.

Alcuni tipi di dati di SQL Server non sono supportati da AccessSome SQL Server data types are not supported by Access

Causa: se si aggiorna successivamente il SQL ServerSQL Server o tabelle di SQL Azure per contenere i tipi di dati che non sono supportati da Access, accesso non è possibile aprire la tabella.Cause: If you later update your SQL ServerSQL Server or SQL Azure tables to contain data types that are not supported by Access, you cannot open the table in Access.

Risoluzione: è possibile definire una query di accesso che restituisce solo le righe con tipi di dati supportati.Resolution: You can define an Access query that returns only those rows with supported data types.

Vedere ancheSee also

Migrazione di database di Access a SQL ServerMigrating Access Databases to SQL Server