Panoramica del provider Microsoft OLE DB per SQL Server

Il provider Microsoft OLE DB per SQL Server, SQLOLEDB, consente ad ADO di accedere a Microsoft SQL Server.

Importante

SQL Server Native Client (spesso abbreviato SNAC) è stato rimosso da SQL Server 2022 (16.x) e SQL Server Management Studio 19 (SSMS). Sia il provider OLE DB di SQL Server Native Client (SQLNCLI o SQLNCLI11) che il provider Microsoft OLE DB legacy per SQL Server (SQLOLEDB) sono sconsigliati per il nuovo sviluppo. In futuro, passare al nuovo driver Microsoft OLE DB (MSOLEDBSQL) per SQL Server.

Parametri della stringa di connessione

Per connettersi a questo provider, impostare l'argomento Provider della proprietà ConnectionString come segue:

SQLOLEDB

È possibile impostare o leggere questo valore anche usando la proprietà Provider.

Stringa di connessione tipica

Una stringa di connessione tipica per questo provider è:

"Provider=SQLOLEDB;Data Source=serverName;"
Initial Catalog=databaseName;
User ID=MyUserID;Password=MyPassword;"

La stringa è costituita da queste parole chiave:

Parola chiave Descrizione
Provider Specifica il provider OLE DB per SQL Server.
Data Source o Server Specifica il nome di un server.
Initial Catalog o Database Specifica il nome di un database nel server.
User ID o uid Specifica il nome utente (per l'autenticazione di SQL Server).
Password o pwd Specifica la password utente (per l'autenticazione di SQL Server).

Nota

Se ci si connette a un provider di origine dati che supporta l'autenticazione di Windows, è necessario specificare Trusted_Connection=yes o Integrated Security = SSPI anziché le informazioni sull'ID utente e sulla password nella stringa di connessione.

Parametri Connection specifici del provider

Il provider supporta diversi parametri di connessione specifici del provider oltre a quelli definiti da ADO. Come per le proprietà di connessione ADO, queste proprietà specifiche del provider possono essere impostate tramite la raccolta Properties di un oggetto Connection o possono essere impostate come parte dell'oggetto ConnectionString.

Parametro Descrizione
Trusted_Connection Indica la modalità di autenticazione dell'utente. Può essere impostato su Yes o No. Il valore predefinito è No. Se questa proprietà è impostata su Yes, SQLOLEDB usa la modalità di autenticazione di Microsoft Windows NT per autorizzare l'accesso dell'utente al database SQL Server specificato dai valori delle proprietà Location e Datasource. Se questa proprietà è impostata su No, SQLOLEDB usa la modalità mista per autorizzare l'accesso dell'utente al database SQL Server. L'account di accesso e la password di SQL Server vengono specificate nelle proprietà User Id e Password.
Lingua corrente Indica il nome della lingua di SQL Server. Identifica la lingua utilizzata per la selezione e la formattazione dei messaggi di sistema. La lingua deve essere installata nell'istanza di SQL Server, in caso contrario, l'apertura della connessione avrà esito negativo.
Indirizzo di rete Indica l'indirizzo di rete dell'istanza di SQL Server specificato dalla proprietà Location.
Libreria di rete Indica il nome della libreria di rete (DLL) usata per comunicare con l'istanza di SQL Server. Il nome non deve include il percorso o l'estensione di file DLL. Il valore predefinito viene fornito dalla configurazione client di SQL Server.
Use Procedure for Prepare Determina se SQL Server crea stored procedure temporanee quando vengono preparati i comandi (dalla proprietà Prepared).
Conversione automatica Indica se i caratteri OEM/ANSI vengono convertiti. Questa proprietà può essere impostata su True o False. Il valore predefinito è True. Se questa proprietà è impostata su True, SQLOLEDB esegue la conversione dei caratteri OEM/ANSI quando le stringhe di caratteri multibyte vengono recuperate dall'istanza di SQL Server o inviate alla stessa. Se questa proprietà è impostata su False, SQLOLEDB non esegue la conversione dei caratteri OEM/ANSI nei dati delle stringhe di caratteri multibyte.
Packet Size Indica le dimensioni del pacchetto di rete in byte. Il valore della proprietà delle dimensioni del pacchetto deve essere compreso tra 512 e 32767. Le dimensioni predefinite dei pacchetti di rete SQLOLEDB sono pari a 4096.
Nome dell'applicazione Indica il nome dell'applicazione client.
ID workstation Stringa che identifica la workstation.

Utilizzo dell'oggetto Command

SQLOLEDB accetta una combinazione di ODBC, ANSI e Transact-SQL specifico di SQL Server come sintassi valida. L'istruzione SQL seguente, ad esempio, utilizza una sequenza di escape ODBC SQL per specificare la funzione per i valori stringa LCASE:

SELECT customerid={fn LCASE(CustomerID)} FROM Customers

LCASE restituisce una stringa di caratteri, convertendo tutti i caratteri maiuscoli nei rispettivi equivalenti minuscoli. Poiché la funzione per i valori stringa ANSI SQL LOWER esegue la stessa operazione, l'istruzione SQL seguente è un equivalente ANSI dell'istruzione ODBC presentata nell'esempio precedente:

SELECT customerid=LOWER(CustomerID) FROM Customers

SQLOLEDB elabora correttamente entrambe le forme dell'istruzione se specificate come testo per un comando.

Stored procedure

Quando si esegue una stored procedure di SQL Server con un comando SQLOLEDB, usare la sequenza di escape della chiamata di procedura ODBC nel testo del comando. SQLOLEDB usa quindi il meccanismo Remote Procedure Call di SQL Server per ottimizzare l'elaborazione del comando. L'istruzione ODBC SQL seguente, ad esempio, rappresenta il testo del comando preferito rispetto al formato Transact-SQL:

ODBC SQL

{call SalesByCategory('Produce', '1995')}

Transact-SQL

EXECUTE SalesByCategory 'Produce', '1995'

Funzionalità di SQL Server

Con SQL Server, ADO può usare il codice XML per l'input dei comandi e recuperare i risultati in formato di flusso XML anziché negli oggetti Recordset. Per altre informazioni, vedere Uso dei flussi per l'input dei comandi e Recupero di set di risultati nei flussi.

Accesso ai dati sql_variant con MDAC 2.7, MDAC 2.8 o Windows DAC 6.0

Microsoft SQL Server dispone di un tipo di dati denominato sql_variant. Simile a DBTYPE_VARIANT di OLE DB, il tipo di dati sql_variant può archiviare dati di diversi tipi. Esistono tuttavia alcune differenze fondamentali tra DBTYPE_VARIANT e sql_variant. ADO gestisce anche i dati archiviati come valore sql_variant diversamente da come gestisce altri tipi di dati. L'elenco seguente descrive i problemi da considerare quando si accede ai dati di SQL Server archiviati in colonne di tipo sql_variant.

  • In MDAC 2.7, MDAC 2.8 e Windows Data Access Components (Windows DAC) 6.0, il provider OLE DB per SQL Server supporta il tipo sql_variant. Il provider OLE DB per ODBC non lo supporta.

  • Il tipo sql_variant non corrisponde esattamente al tipo di dati DBTYPE_VARIANT. Il tipo sql_variant supporta alcuni nuovi sottotipi non supportati da DBTYPE_VARIANT, tra cui GUID, stringhe ANSI (non UNICODE) e BIGINT. L'uso di sottotipi diversi da quelli elencati in precedenza funzionerà correttamente.

  • Il sottotipo sql_variantNUMERIC non corrisponde a DBTYPE_DECIMAL in termini di dimensioni.

  • Le coercizioni di più tipi di dati daranno luogo a tipi che non corrispondono. Ad esempio, la coercizione di un tipo sql_variant con un sottotipo GUID in un tipo DBTYPE_VARIANT comporterà un sottotipo safearray(byte). La riconversione di questo tipo in un tipo sql_variant comporta un nuovo sottotipo array(byte).

  • I campi degli oggetti Recordset contenenti dati sql_variant possono essere usati in remoto (sottoposti a marshalling) o essere resi persistenti solo se il tipo sql_variant contiene sottotipi specifici. Il tentativo di usare i dati in remoto o di renderli persistenti con i seguenti sottotipi non supportati causerà un errore di runtime (conversione non supportata) da parte del provider di persistenza Microsoft (MSPersist): VT_VARIANT, VT_RECORD, VT_ILLEGAL, VT_UNKNOWN, VT_BSTR e VT_DISPATCH.

  • Il provider OLE DB per SQL Server in MDAC 2.7, MDAC 2.8 e Windows DAC 6.0 ha una proprietà dinamica denominata Allow Native Variants che, come suggerisce il nome, consente agli sviluppatori di accedere al tipo sql_variant nel formato nativo anziché al tipo DBTYPE_VARIANT. Se questa proprietà è impostata e un oggetto Recordset viene aperto con il motore del cursore client (adUseClient), la chiamata Recordset.Open avrà esito negativo. Se questa proprietà è impostata e un oggetto Recordset viene aperto con i cursori del server (adUseServer), la chiamata Recordset.Open avrà esito positivo, ma l'accesso alle colonne di tipo sql_variant genererà un errore.

  • Nelle applicazioni client che usano MDAC 2.5, è possibile usare i dati sql_variant con query su Microsoft SQL Server. Tuttavia, i valori dei dati sql_variant vengono considerati come stringhe. Tali applicazioni client devono essere aggiornate a MDAC 2.7, MDAC 2.8 o Windows DAC 6.0.

Comportamento dell'oggetto Recordset

SQLOLEDB non può usare i cursori di SQL Server per supportare i risultati multipli generati da molti comandi. Se un consumer richiede un recordset per cui è necessario il supporto del cursore SQL Server, si verifica un errore se il testo del comando usato genera più di un recordset come risultato.

I recordset SQLOLEDB scorrevoli sono supportati dai cursori di SQL Server. SQL Server impone limitazioni sui cursori che sono sensibili alle modifiche apportate dagli altri utenti del database. In particolare, le righe in alcuni cursori non possono essere ordinate e il tentativo di creare un recordset tramite un comando che contiene una clausola SQL ORDER BY può non riuscire.

Proprietà dinamiche

Il provider Microsoft OLE DB per SQL Server inserisce diverse proprietà dinamiche nella raccolta Properties degli oggetti Connection, Recordset e Command non aperti.

Le tabelle seguenti sono un indice incrociato dei nomi ADO e OLE DB per ogni proprietà dinamica. La Guida di riferimento per programmatori OLE DB fa riferimento al nome di una proprietà ADO con il termine "Description". Altre informazioni su queste proprietà sono disponibili nella Guida di riferimento per programmatori OLE DB. Cercare il nome della proprietà OLE DB nell'indice o vedere Appendice C: Proprietà OLE DB.

Proprietà dinamiche di Connection

Le proprietà seguenti vengono aggiunte alla raccolta Properties dell'oggetto Connection.

Nome proprietà ADO Nome proprietà OLE DB
Sessioni attive DBPROP_ACTIVESESSIONS
Interruzione asincrona DBPROP_ASYNCTXNABORT
Commit asincrono DBPROP_ASYNCTNXCOMMIT
Livelli di isolamento Autocommit DBPROP_SESS_AUTOCOMMITISOLEVELS
Posizione catalogo DBPROP_CATALOGLOCATION
Termine catalogo DBPROP_CATALOGTERM
Definizione colonna DBPROP_COLUMNDEFINITION
Connect Timeout DBPROP_INIT_TIMEOUT
Catalogo corrente DBPROP_CURRENTCATALOG
Origine dati DBPROP_INIT_DATASOURCE
Nome origine dati DBPROP_DATASOURCENAME
Modello di threading oggetto origine dati DBPROP_DSOTHREADMODEL
Nome DBMS DBPROP_DBMSNAME
Versione DBMS DBPROP_DBMSVER
Extended Properties DBPROP_INIT_PROVIDERSTRING
Supporto GROUP BY DBPROP_GROUPBY
Supporto tabelle eterogenee DBPROP_HETEROGENEOUSTABLES
Distinzione maiuscole/minuscole identificatori DBPROP_IDENTIFIERCASE
Catalogo iniziale DBPROP_INIT_CATALOG
Livelli di isolamento DBPROP_SUPPORTEDTXNISOLEVELS
Conservazione isolamento DBPROP_SUPPORTEDTXNISORETAIN
Locale Identifier DBPROP_INIT_LCID
Dimensioni massime indice DBPROP_MAXINDEXSIZE
Dimensioni massime riga DBPROP_MAXROWSIZE
Dimensioni massime riga con BLOB DBPROP_MAXROWSIZEINCLUDESBLOB
Numero massimo tabelle in SELECT DBPROP_MAXTABLESINSELECT
Set di parametri multipli DBPROP_MULTIPLEPARAMSETS
Risultati multipli DBPROP_MULTIPLERESULTS
Oggetti di archiviazione multipli DBPROP_MULTIPLESTORAGEOBJECTS
Aggiornamento tabelle multiple DBPROP_MULTITABLEUPDATE
Ordinamento regole di confronto NULL DBPROP_NULLCOLLATION
Comportamento concatenazione NULL DBPROP_CONCATNULLBEHAVIOR
Versione OLE DB DBPROP_PROVIDEROLEDBVER
Supporto oggetti OLE DBPROP_OLEOBJECTS
Supporto set di righe aperto DBPROP_OPENROWSETSUPPORT
Colonne ORDER BY nell'elenco di selezione DBPROP_ORDERBYCOLUMNSINSELECT
Disponibilità parametri di output DBPROP_OUTPUTPARAMETERAVAILABILITY
Funzioni di accesso specificate per riferimento DBPROP_BYREFACCESSORS
Password DBPROP_AUTH_PASSWORD
Persist Security Info DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO
Tipo ID persistente DBPROP_PERSISTENTIDTYPE
Comportamento preparazione interruzione DBPROP_PREPAREABORTBEHAVIOR
Comportamento preparazione commit DBPROP_PREPARECOMMITBEHAVIOR
Termine routine DBPROP_PROCEDURETERM
Richiesta DBPROP_INIT_PROMPT
Nome descrittivo provider DBPROP_PROVIDERFRIENDLYNAME
Nome provider DBPROP_PROVIDERFILENAME
Versioni del provider DBPROP_PROVIDERVER
Origine dati di sola lettura DBPROP_DATASOURCEREADONLY
Conversioni set di righe a comando DBPROP_ROWSETCONVERSIONSONCOMMAND
Termine schema DBPROP_SCHEMATERM
Utilizzo schema DBPROP_SCHEMAUSAGE
Supporto di SQL DBPROP_SQLSUPPORT
Archiviazione strutturata DBPROP_STRUCTUREDSTORAGE
Supporto query nidificata DBPROP_SUBQUERIES
Termine tabella DBPROP_TABLETERM
DDL transazione DBPROP_SUPPORTEDTXNDDL
ID utente DBPROP_AUTH_USERID
Nome utente DBPROP_USERNAME
Handle finestra DBPROP_INIT_HWND

Proprietà dinamiche dell'oggetto Recordset

Le proprietà seguenti vengono aggiunte alla raccolta Properties dell'oggetto Recordset.

Nome proprietà ADO Nome proprietà OLE DB
Ordine di accesso DBPROP_ACCESSORDER
Blocco degli oggetti di archiviazione DBPROP_BLOCKINGSTORAGEOBJECTS
Tipo di segnalibro DBPROP_BOOKMARKTYPE
Contrassegnabile con segnalibro DBPROP_IROWSETLOCATE
Modifica righe inserite DBPROP_CHANGEINSERTEDROWS
Privilegi colonna DBPROP_COLUMNRESTRICT
Notifica set di colonne DBPROP_NOTIFYCOLUMNSET
Timeout comando DBPROP_COMMANDTIMEOUT
Defer Column DBPROP_DEFERRED
Ritarda aggiornamenti degli oggetti di archiviazione DBPROP_DELAYSTORAGEOBJECTS
Recupero all’indietro DBPROP_CANFETCHBACKWARDS
Mantieni righe DBPROP_CANHOLDROWS
IAccessor DBPROP_IAccessor
IColumnsInfo DBPROP_IColumnsInfo
IColumnsRowset DBPROP_IColumnsRowset
IConnectionPointContainer DBPROP_IConnectionPointContainer
IConvertType DBPROP_IConvertType
Righe immobili DBPROP_IMMOBILEROWS
IRowset DBPROP_IRowset
IRowsetChange DBPROP_IRowsetChange
IRowsetIdentity DBPROP_IRowsetIdentity
IRowsetInfo DBPROP_IRowsetInfo
IRowsetLocate DBPROP_IRowsestLocate
IRowsetResynch
IRowsetScroll DBPROP_IRowsetScroll
IRowsetUpdate DBPROP_IRowsetUpdate
ISequentialStream DBPROP_ISequentialStream
ISupportErrorInfo DBPROP_ISupportErrorInfo
Segnalibri letterali DBPROP_LITERALBOOKMARKS
Identità riga letterale DBPROP_LITERALIDENTITY
Numero massimo righe aperte DBPROP_MAXOPENROWS
Numero massimo righe in sospeso DBPROP_MAXPENDINGROWS
Numero massimo righe DBPROP_MAXROWS
Granularità notifiche DBPROP_NOTIFICATIONGRANULARITY
Fasi di notifica DBPROP_NOTIFICATIONPHASES
Oggetti transazione DBPROP_TRANSACTEDOBJECT
Modifiche di altri utenti visibili DBPROP_OTHERUPDATEDELETE
Inserimenti di altri utenti visibili DBPROP_OTHERINSERT
Modifiche locali visibili DBPROP_OWNUPDATEDELETE
Propri inserimenti visibili DBPROP_OWNINSERT
Mantieni in caso di interruzione DBPROP_ABORTPRESERVE
Mantieni in caso di commit DBPROP_COMMITPRESERVE
Riavvio rapido DBPROP_QUICKRESTART
Eventi rientranti DBPROP_REENTRANTEVENTS
Rimuovi righe eliminate DBPROP_REMOVEDELETED
Segnala modifiche multiple DBPROP_REPORTMULTIPLECHANGES
Restituisci inserimenti in sospeso DBPROP_RETURNPENDINGINSERTS
Notifica eliminazione riga DBPROP_NOTIFYROWDELETE
Notifica prima modifica riga DBPROP_NOTIFYROWFIRSTCHANGE
Notifica inserimento riga DBPROP_NOTIFYROWINSERT
Privilegi riga DBPROP_ROWRESTRICT
Notifica risincronizzazione riga DBPROP_NOTIFYROWRESYNCH
Modello di threading riga DBPROP_ROWTHREADMODEL
Notifica annullamento modifica riga DBPROP_NOTIFYROWUNDOCHANGE
Notifica annullamento eliminazione riga DBPROP_NOTIFYROWUNDODELETE
Notifica annullamento inserimento riga DBPROP_NOTIFYROWUNDOINSERT
Notifica aggiornamento riga DBPROP_NOTIFYROWUPDATE
Notifica modifica posizione recupero set di righe DBPROP_NOTIFYROWSETFETCHPOSISIONCHANGE
Notifica rilascio set di righe DBPROP_NOTIFYROWSETRELEASE
Scorri indietro DBPROP_CANSCROLLBACKWARDS
Cursore server DBPROP_SERVERCURSOR
Ignora segnalibri eliminati DBPROP_BOOKMARKSKIPPED
Identità di riga forte DBPROP_STRONGITDENTITY
Righe univoche DBPROP_UNIQUEROWS
Aggiornabilità DBPROP_UPDATABILITY
Utilizza segnalibri DBPROP_BOOKMARKS

Proprietà dinamiche di Command

Le proprietà seguenti vengono aggiunte alla raccolta Properties dell'oggetto Command.

Nome proprietà ADO Nome proprietà OLE DB
Ordine di accesso DBPROP_ACCESSORDER
Percorso base SSPROP_STREAM_BASEPATH
Blocco degli oggetti di archiviazione DBPROP_BLOCKINGSTORAGEOBJECTS
Tipo di segnalibro DBPROP_BOOKMARKTYPE
Contrassegnabile con segnalibro DBPROP_IROWSETLOCATE
Modifica righe inserite DBPROP_CHANGEINSERTEDROWS
Privilegi colonna DBPROP_COLUMNRESTRICT
Notifica set di colonne DBPROP_NOTIFYCOLUMNSET
Tipo di contenuto SSPROP_STREAM_CONTENTTYPE
Recupero automatico cursore SSPROP_CURSORAUTOFETCH
Defer Column DBPROP_DEFERRED
Posticipa comandi prepare SSPROP_DEFERPREPARE
Ritarda aggiornamenti degli oggetti di archiviazione DBPROP_DELAYSTORAGEOBJECTS
Recupero all’indietro DBPROP_CANFETCHBACKWARDS
Mantieni righe DBPROP_CANHOLDROWS
IAccessor DBPROP_IAccessor
IColumnsInfo DBPROP_IColumnsInfo
IColumnsRowset DBPROP_IColumnsRowset
IConnectionPointContainer DBPROP_IConnectionPointContainer
IConvertType DBPROP_IConvertType
Righe immobili DBPROP_IMMOBILEROWS
IRowset DBPROP_IRowset
IRowsetChange DBPROP_IRowsetChange
IRowsetIdentity DBPROP_IRowsetIdentity
IRowsetInfo DBPROP_IRowsetInfo
IRowsetLocate DBPROP_IRowsetLocate
IRowsetResynch DBPROP_IRowsetResynch
IRowsetScroll DBPROP_IRowsetScroll
IRowsetUpdate DBPROP_IRowsetUpdate
ISequentialStream DBPROP_ISequentialStream
ISupportErrorInfo DBPROP_ISupportErrorInfo
Segnalibri letterali DBPROP_LITERALBOOKMARKS
Identità riga letterale DBPROP_LITERALIDENTITY
Modalità di blocco DBPROP_LOCKMODE
Numero massimo righe aperte DBPROP_MAXOPENROWS
Numero massimo righe in sospeso DBPROP_MAXPENDINGROWS
Numero massimo righe DBPROP_MAXROWS
Granularità notifiche DBPROP_NOTIFICATIONGRANULARITY
Fasi di notifica DBPROP_NOTIFICATIONPHASES
Oggetti transazione DBPROP_TRANSACTEDOBJECT
Modifiche di altri utenti visibili DBPROP_OTHERUPDATEDELETE
Inserimenti di altri utenti visibili DBPROP_OTHERINSERT
Proprietà Codifica output DBPROP_OUTPUTENCODING
Proprietà Flusso di output DBPROP_OUTPUTSTREAM
Modifiche locali visibili DBPROP_OWNUPDATEDELETE
Propri inserimenti visibili DBPROP_OWNINSERT
Mantieni in caso di interruzione DBPROP_ABORTPRESERVE
Mantieni in caso di commit DBPROP_COMMITPRESERVE
Riavvio rapido DBPROP_QUICKRESTART
Eventi rientranti DBPROP_REENTRANTEVENTS
Rimuovi righe eliminate DBPROP_REMOVEDELETED
Segnala modifiche multiple DBPROP_REPORTMULTIPLECHANGES
Restituisci inserimenti in sospeso DBPROP_RETURNPENDINGINSERTS
Notifica eliminazione riga DBPROP_NOTIFYROWDELETE
Notifica prima modifica riga DBPROP_NOTIFYROWFIRSTCHANGE
Notifica inserimento riga DBPROP_NOTIFYROWINSERT
Privilegi riga DBPROP_ROWRESTRICT
Notifica risincronizzazione riga DBPROP_NOTIFYROWRESYNCH
Modello di threading riga DBPROP_ROWTHREADMODEL
Notifica annullamento modifica riga DBPROP_NOTIFYROWUNDOCHANGE
Notifica annullamento eliminazione riga DBPROP_NOTIFYROWUNDODELETE
Notifica annullamento inserimento riga DBPROP_NOTIFYROWUNDOINSERT
Notifica aggiornamento riga DBPROP_NOTIFYROWUPDATE
Notifica modifica posizione recupero set di righe DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE
Notifica rilascio set di righe DBPROP_NOTIFYROWSETRELEASE
Scorri indietro DBPROP_CANSCROLLBACKWARDS
Cursore server DBPROP_SERVERCURSOR
Dati server all'inserimento DBPROP_SERVERDATAONINSERT
Ignora segnalibri eliminati DBPROP_BOOKMARKSKIP
Identità di riga forte DBPROP_STRONGIDENTITY
Aggiornabilità DBPROP_UPDATABILITY
Utilizza segnalibri DBPROP_BOOKMARKS
Radice XML SSPROP_STREAM_XMLROOT
XSL SSPROP_STREAM_XSL

Per informazioni specifiche sull'implementazione e informazioni funzionali sul provider OLE DB di Microsoft SQL Server, vedere Provider di SQL Server.

Vedi anche

Proprietà ConnectionString (ADO)Proprietà Provider (ADO)Oggetto Recordset (ADO)