Questo articolo illustra alcune nozioni di base relative ai database. Le sezioni seguenti illustrano le nozioni di base per accedere a un database con stringhe di connessione e usando un'interfaccia di programmazione di database nel codice VBA di Access.
Contenuto dell'articolo
Uso di un driver ODBC o un provider OLE DB
Interfacciarsi a livello di programmazione da SQL Server ad Access
Riepilogo delle versioni dei driver ODBC
Riepilogo delle versioni dei provider OLE DB
Uso di un driver ODBC o un provider OLE DB
Le stringhe di connessione sono ormai disponibili da tempo. È possibile definire una stringa di connessione formattata nell'interfaccia utente di Access oppure nel codice VBA. Una stringa di connessione (ODBC o OLE DB) passa le informazioni direttamente al database, come il percorso server, il nome del database, il tipo di sicurezza e altre opzioni utili. Ad esempio:
ODBC;DRIVER=SQL Server;SERVER="MyServer";DATABASE="MyHRdb";TRUSTED_CONNECTION=Yes
Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=MyHRdb; Integrated Security=SSPI;
Inizialmente, era disponibile SQL Server Native Client (SNAC), una raccolta autonoma che conteneva le tecnologie ODBC e OLEDB. È comunque ancora disponibile per le versioni 2005-2012 di SQL Server. Molte applicazioni legacy usavano SNAC, che è comunque ancora supportata per la compatibilità con le versioni precedenti, ma non è consigliabile usarla per lo sviluppo di nuove applicazioni. È consigliabile usare le singole versioni scaricabili più recenti dei driver ODBC.
Driver ODBC
ODBC (Open Database Connectivity) è un protocollo che consente di connettere un database di Access a un'origine dati esterna, ad esempio Microsoft SQL Server. In genere, è possibile usare le origini dati dei file, dette anche file DSN, per aggiungere una stringa di connessione, nel qual caso viene usata la parola chiave FILEDSN nella stringa di connessione, o archiviarla nel registro di sistema, nel qual caso si usa la parola chiave DSN. In alternativa, è possibile usare VBA per impostare queste proprietà usando una stringa di connessione "senza DNS".
Nel corso degli anni i driver ODBC sono stati forniti in tre fasi:
-
Prima del 2005, i driver ODBC venivano forniti con Windows Data Access Components (WDAC), che in origine era denominato Microsoft Data Access Components (MDAC). Questi componenti sono ancora forniti con Windows per la compatibilità con le versioni precedenti. Per altre informazioni, vedere Microsoft o Windows Data Access Components.
-
I driver ODBC venivano forniti con SNAC per SQL Server 2005 - SQL Server 2012.
-
Dopo SQL Server 2012, i driver ODBC vengono forniti singolarmente e contengono il supporto per le nuove funzionalità di SQL Server.
Per un nuovo sviluppo, evitare di usare i driver ODBC delle prime due fasi e usare i driver ODBC dalla terza fase.
Provider OLE DB
OLE DB (Object Linking and Embedding, Database) è un protocollo più recente che consente di connettere un database di Access a un'origine dati esterna, ad esempio Microsoft SQL Server. OLE DB non richiede un DSN e consente anche l'accesso completo a origini dati ODBC e driver ODBC.
Suggerimento In genere, è possibile usare la finestra di dialogo Proprietà di Data Link per aggiungere una stringa di connessione OLE DB. Anche se non è possibile aprire la finestra di dialogo Proprietà di Data Link in Access, in Esplora risorse è possibile creare un file con estensione txt vuoto, modificare il tipo di file in UDL e quindi fare doppio clic sul file. Dopo aver creato una stringa di connessione, cambiare di nuovo il tipo di file in TXT.
Nel corso degli anni i provider OLE DB sono stati forniti in tre fasi:
-
Prima del 2005, i provider OLE DB venivano forniti con Windows Data Access Components (WDAC), che in origine era denominato Microsoft Data Access Components (MDAC).
-
I provider OLE DB venivano forniti con SQL Server 2005 - SQL Server 2017. Sono stati deprecati nel 2011.
-
Nel 2017, il provider OLE DB di SQL Server è stato ripristinato.
La versione attualmente consigliata per lo sviluppo di nuove soluzioni è il driver OLE DB 18 per SQL Server.
Come ottimizzare le prestazioni con una stringa di connessione ODBC
Per ottimizzare le prestazioni, ridurre al minimo il traffico di rete e ridurre l'accesso multiutente al database di SQL Server, usare il minor numero possibile di stringhe di connessione condividendo le stringhe di connessione tra più set di record. Anche se Ace passa semplicemente una stringa di connessione al server, capisce e usa le parole chiave seguenti: DNS, DATABASE, UID, PWD e DRIVER per ridurre al minimo le comunicazioni client/server.
Nota Se una connessione ODBC a un'origine dati esterna viene persa, Access prova a riconnettersi automaticamente. Se il tentativo riesce, è possibile continuare a lavorare. Se il tentativo non riesce, è comunque possibile usare gli oggetti che non si basano sulla connessione. Per riconnettersi, chiudere e riaprire Access.
Suggerimenti per l'uso congiunto di ODBC e OLE DB
Evitare di combinare la stringa di connessione e le tecnologie di accesso ai database. Usare una stringa di connessione ODBC per DAO. Usare una stringa di connessione OLE DB per ADO. Se l'applicazione contiene codice VBA che usa sia DAO che ADO, usare il driver ODBC per DAO e il provider OLE DB per ADO. Cercare di ottenere le funzionalità e i supporti più recenti rispettivamente per ODBC e OLEDB.
ODBC usa il termine "driver" e OLE DB usa il termine "provider". I termini descrivono lo stesso tipo di componente software, ma non sono intercambiabili nella sintassi della stringa di connessione. Usare il valore corretto come documentato.
Interfacciarsi a livello di programmazione da SQL Server ad Access
Sono disponibili due modi principali per interfacciarsi a livello di programmazione con un database di SQL Server.
DAO
Un oggetto di accesso ai dati (DAO) rappresenta un'interfaccia astratta di un database. Microsoft Data Access Objects (DAO) è il modello a oggetti di programmazione nativo che consente di accedere al nucleo di Access e di SQL Server per creare, eliminare, modificare ed elencare oggetti, tabelle, campi, indici, relazioni, query, proprietà e database esterni.
Per altre informazioni, vedere Riferimenti agli oggetti di accesso ai dati Microsoft.
ADO
ActiveX Data Objects (ADO) include un modello di programmazione di alto livello ed è disponibile in Access per mezzo di un riferimento a una raccolta di terze parti. ADO è facile da imparare e consente alle applicazioni client di accedere e modificare i dati da una varietà di origini, tra cui Access e SQL Server. I vantaggi principali sono semplicità d'uso, alta velocità, sovraccarico ridotto della memoria e un ingombro minimo del disco. ADO supporta anche le principali funzionalità per la creazione di applicazioni basate sul Web.
Per altre informazioni, vedere Riferimenti agli oggetti ADO e Microsoft ActiveX Data Objects (ADO).
Quale è opportuno scegliere?
In una soluzione Access che usa il codice VBA è possibile usare DAO, ADO o entrambe come tecnologia di interfaccia di database. DAO continuerà a essere l'impostazione predefinita di Access. Ad esempio, tutte le maschere e i report e le query di Access usano DAO. Tuttavia, quando si esegue la migrazione a SQL Server, è consigliabile usare ADO per rendere la soluzione più efficiente. Di seguito sono elencate le linee guida generali che consentono di decidere quando usare DAO o ADO.
Usare DAO se si vuole:
-
Creare una maschera associata di lettura/scrittura senza usare VBA.
-
Eseguire query sulle tabelle locali.
-
Scaricare i dati in tabelle temporanee.
-
Usare le query pass-through come origini dati per report o maschere in modalità di sola lettura.
-
Definire e usare un oggetto TableDef o QueryDef in VBA.
Usare ADO se si vuole:
-
Sfruttare altri modi per ottimizzare, come l'esecuzione di operazioni asincrone.
-
Eseguire query pass-through DDL e DML.
-
Accedere ai dati di SQL Server direttamente tramite recordset in VBA.
-
Scrivere codice più semplice per determinate attività, ad esempio lo streaming di BLOB.
-
Chiama una stored procedure direttamente, con parametri, usando un oggetto comando in VBA.
Riepilogo delle versioni dei driver ODBC
La tabella seguente riepiloga le informazioni importanti sulle versioni dei driver ODBC, i percorsi di download e il supporto delle funzionalità. Assicurarsi di usare la versione di bit corretta (64 bit o 32 bit) del driver in base a Windows e non a Office. Se si esegue Access a 32 bit in Windows a 64 bit, installare i driver a 64 bit, che includono i componenti a 32 bit necessari per Access.
Per altre informazioni, vedere Uso delle parole chiave della stringa di connessione con SQL Server Native Client, Note sulla versione di ODBC per SQL Server in Windows (V17) ed Funzionalità di Microsoft ODBC Driver for SQL Server in Windows (V13, 11).
Riepilogo delle versioni dei provider OLE DB
La tabella seguente riepiloga le informazioni importanti sulle versioni dei provider OLE DB, i percorsi di download e il supporto delle funzionalità. Assicurarsi di usare la versione di bit corretta (64 bit o 32 bit) del driver in base a Windows e non a Office. Se si esegue Access a 32 bit in Windows a 64 bit, installare i driver a 64 bit, che includono i componenti a 32 bit necessari per Access.
Per altre informazioni, vedere Uso delle parole chiave delle stringhe di connessione con SQL Server Native Client.
Provider OLE DB |
Versione |
Download |
Nuove funzionalità |
Driver OLE DB 18.2.1 (MSOLEDBSQL) |
SQL Server 2017 |
Microsoft OLE DB Driver for SQL Server e le Note sulla versione per Microsoft OLE DB Driver for SQL Server |
|
SQL Server Native Client (SQLNCLI) |
SQL Server 2005 - 2012 |
Deprecato, non usare |
|
Driver OLE DB (SQLOLEDB) |
Deprecato, non usare |
Riepilogo delle parole chiave ODBC
La tabella seguente riepiloga le parole chiave ODBC riconosciute da SQL Server e il loro scopo. Solo un sottoinsieme viene riconosciuto da Access.
Parola chiave |
Descrizione |
Addr |
Indirizzo di rete del server che esegue un'istanza di SQL Server. |
AnsiNPW |
Specifica l'uso dei comportamenti definiti dall'ANSI per gestire i confronti con valori NULL, la spaziatura tra caratteri, gli avvisi e la concatenazione NULL (Sì o No). |
APP |
Nome dell'applicazione che chiama SQLDriverConnect. |
ApplicationIntent |
Dichiara il tipo di carico di lavoro dell'applicazione quando ci si connette a un server (ReadOnly o ReadWrite). |
AttachDBFileName |
Nome del file primario di un database associabile. |
AutoTranslate |
Specifica se le stringhe di caratteri ANSI vengono inviate tra il client o il server o convertite in Unicode (Sì o No). |
Database |
Il nome del database. Descrizione Lo scopo della connessione. Driver Nome del driver restituito da SQLDrivers. |
DSN |
Nome di un'origine dati sistema o di un utente ODBC esistente. Crittografa Specifica se i dati devono essere crittografati prima di inviarli in rete (Sì o No). |
Failover_Partner |
Nome del server partner di failover da usare se non è possibile stabilire una connessione al server primario. |
FailoverPartnerSPN |
Nome dell'entità servizio per il partner di failover. |
Fallback |
Parola chiave deprecata. |
FileDSN |
Nome di un'origine dati file ODBC esistente. Lingua Lingua di SQL Server. |
MARS_Connection |
Specifica più set di risultati attivi (MARS) nella connessione per SQL Server 2005 (9. x) o versione successiva (Sì o No). |
MultiSubnetFailover |
Specifica se connettersi al listener del gruppo di disponibilità di un gruppo di disponibilità di SQL Server o a un'istanza del cluster di failover (Sì o No). |
Netto |
dbnmpntw indica Named Pipes e dbmssocn indica TCP/IP. |
PWD |
Password di accesso a SQL Server. |
QueryLog_On |
Specifica la registrazione di query con esecuzione prolungata (Sì o No). |
QueryLogFile |
Percorso completo e nome di un file da usare per registrare i dati nelle query con esecuzione prolungata. |
QueryLogTime |
Stringa di caratteri numerici che specifica la soglia (in millisecondi) per la registrazione di query con esecuzione prolungata. |
QuotedId |
Specifica se SQL Server usa le regole ISO relative all'uso delle virgolette nelle istruzioni SQL (Sì o No). |
Regional |
Specifica se il driver ODBC di SQL Server Native Client usa le impostazioni del client per convertire i dati di valuta, data o ora in dati carattere (Sì o No). |
SaveFile |
Nome di un file di origine dati ODBC in cui vengono salvati gli attributi della connessione corrente, se la connessione è riuscita. |
Server |
Il nome di un'istanza di SQL Server: Server della rete, un indirizzo IP o un alias di Configuration Manager. |
ServerSPN |
Nome SPN per il server. |
StatsLog_On |
Consente di acquisire i dati delle prestazioni del driver ODBC di SQL Server Native Client. |
StatsLogFile |
Percorso completo e nome di un file usato per registrare statistiche sulle prestazioni del driver ODBC di SQL Server Native Client. |
Trusted_Connection |
Specifica se la modalità di autenticazione di Windows o il nome utente o la password di SQL Server vengono usati per la convalida dell'accesso (Sì o No). |
TrustServerCertificate |
Se usato con Crittografa, abilita la crittografia con un certificato server autofirmato. |
UID |
Nome di accesso di SQL Server. |
UseProcForPrepare |
Parola chiave deprecata. |
WSID |
Identificatore della workstation, il nome di rete del computer in cui si trova l'applicazione. |
Riepilogo delle parole chiave OLE DB
La tabella seguente riepiloga le parole chiave OLE DB riconosciute da SQL Server e il loro scopo. Solo un sottoinsieme viene riconosciuto da Access.
Parola chiave |
Descrizione |
Addr |
Indirizzo di rete del server che esegue un'istanza di SQL Server. |
APP |
Stringa che identifica l'applicazione. |
ApplicationIntent |
Dichiara il tipo di carico di lavoro dell'applicazione quando ci si connette a un server (ReadOnly o ReadWrite). |
AttachDBFileName |
Nome del file primario di un database associabile. |
AutoTranslate |
Configura la conversione caratteri OEM/ANSI (True o False). |
Timeout connessione |
La quantità di tempo (in secondi) di attesa per il completamento dell'inizializzazione dell'origine dati. |
Lingua corrente |
Il nome della lingua di SQL Server. |
Origine dati |
Il nome di un'istanza di SQL Server nell'organizzazione. |
Database |
Il nome del database. |
DataTypeCompatibility |
Numero che indica la modalità di gestione dei tipi di dati che verrà usata. |
Crittografa |
Specifica se i dati devono essere crittografati prima di inviarli in rete (Sì o No). |
FailoverPartner |
Il nome del server di failover usato per il mirroring del database. |
FailoverPartnerSPN |
Nome dell'entità servizio per il partner di failover. |
Catalogo iniziale |
Il nome del database. |
Nome file iniziale |
Nome del file primario (incluso il percorso completo) di un database associabile. |
Sicurezza integrata |
Usato per l'autenticazione di Windows. |
Lingua |
Lingua di SQL Server. |
MarsConn |
Specifica più set di risultati attivi (MARS) nella connessione per SQL Server 2005 (9. x) o versione successiva (Sì o No). |
Netto |
La raccolta di rete usata per stabilire una connessione a un'istanza di SQL Server nell'organizzazione. |
Indirizzo di rete |
Indirizzo di rete di un'istanza di SQL Server nell'organizzazione. |
PacketSize |
Dimensioni del pacchetto di rete. L'impostazione predefinita è 4096. |
Salvataggio permanente delle informazioni di sicurezza |
Specifica se è abilitata la sicurezza permanente (True o False). |
PersistSensitive |
Specifica se è abilitata la riservatezza permanente (True o False). |
Provider |
Per SQL Server Native Client, dovrebbe essere SQLNCLI11. |
PWD |
Password di accesso a SQL Server. |
Server |
Il nome di un'istanza di SQL Server: Server della rete, un indirizzo IP o un alias di Configuration Manager. |
ServerSPN |
Nome SPN per il server. |
Timeout |
La quantità di tempo (in secondi) di attesa per il completamento dell'inizializzazione dell'origine dati. |
Trusted_Connection |
Specifica se la modalità di autenticazione di Windows o il nome utente o la password di SQL Server vengono usati per la convalida dell'accesso (Sì o No). |
TrustServerCertificate |
Specifica se un certificato server è convalidato (True o False). |
UID |
Nome di accesso di SQL Server. |
Usa la crittografia per i dati |
Specifica se i dati devono essere crittografati prima di inviarli in rete (True o False). |
UseProcForPrepare |
Parola chiave deprecata. |
WSID |
Identificatore della workstation, il nome di rete del computer in cui si trova l'applicazione. |