Condividi tramite


Aggiornamento di un'applicazione al driver OLE DB per SQL Server da MDAC

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Download del driver OLE DB

Esistono alcune differenze tra il driver OLE DB per SQL Server e Microsoft Data Access Components (MDAC). A partire da Windows Vista, i componenti di accesso ai dati vengono chiamati Windows Data Access Components (o Windows DAC). Nonostante entrambe le tecnologie consentano l'accesso nativo ai dati dei database di SQL Server, OLE DB Driver per SQL Server è stato appositamente progettato per esporre le nuove funzionalità di SQL Server pur mantenendo la compatibilità con le versioni precedenti.

Inoltre, sebbene MDAC contenga componenti per l'utilizzo di OLE DB, ODBC e ActiveX Data Objects (ADO), OLE DB Driver per SQL Server implementa solo OLE DB, anche se ADO può accedere alla funzionalità di OLE DB Driver per SQL Server.

OLE DB Driver per SQL Server e MDAC differiscono anche nelle aree seguenti:

  • Gli utenti che usano ADO per accedere a OLE DB Driver per SQL Server potrebbero riscontrare una funzionalità di filtro meno avanzata quando accedono a un provider OLE DB SQL.

  • Se un'applicazione ADO usa OLE DB Driver per SQL Server e tenta di aggiornare una colonna calcolata, viene generato un errore. Con MDAC l'aggiornamento è stato accettato, ma ignorato.

  • OLE DB Driver per SQL Server è un singolo file DLL (libreria a collegamento dinamico) autonomo. Il numero di interfacce esposte pubblicamente è stato ridotto al minimo, per facilitare la distribuzione e limitare al tempo stesso i rischi legati alla sicurezza.

  • Sono supportate solo le interfacce OLE DB.

  • I nomi di OLE DB Driver per SQL Server sono diversi dai nomi usati con MDAC.

  • Le funzionalità accessibili all'utente offerte dai componenti MDAC sono disponibili quando si usa OLE DB Driver per SQL Server. Le più importanti sono le seguenti: pool di connessioni, supporto ADO e supporto del cursore del client. Quando viene usata una di queste funzionalità, OLE DB Driver per SQL Server offre solo la connettività del database. MDAC fornisce funzionalità come la traccia, i controlli di gestione e i contatori delle prestazioni.

  • Le applicazioni possono usare i servizi di base di OLE DB con OLE DB Driver per SQL Server, ma in presenza del motore del cursore di OLE DB, è necessario selezionare l'opzione relativa alla compatibilità dei tipi di dati per evitare qualsiasi problema potenziale che potrebbe insorgere quando il motore del cursore non conosce i nuovi tipi di dati di SQL Server 2005 (9.x).

  • OLE DB Driver per SQL Server supporta l'accesso ai database di SQL Server precedenti.

  • OLE DB Driver per SQL Server non contiene l'integrazione XML. OLE DB Driver per SQL Server supporta SELECT ... Query FOR XML, ma non supporta altre funzionalità XML. Tuttavia, OLE DB Driver per SQL Server supporta il tipo di dati xml introdotto in SQL Server 2005 (9.x).

  • Il driver OLE DB per SQL Server supporta la configurazione delle librerie di rete sul lato client usando solo gli attributi della stringa di connessione. Per una configurazione delle libreria di rete più completa, è necessario usare Gestione configurazione SQL Server.

  • Le stringhe di connessione MDAC consentono l'utilizzo di un valore booleano (true) per la parola chiave Trusted_Connection. Una stringa di connessione di OLE DB Driver per SQL Server deve usare yes o no.

  • Gli avvisi e gli errori non hanno subito modifiche particolarmente rilevanti. Quelli restituiti dal server mantengono ora lo stesso livello di gravità quando vengono passati al driver OLE DB per SQL Server. Se l'intercettazione di determinati avvisi ed errori riveste un'importanza particolare, è necessario assicurarsi che l'applicazione sia stata sottoposta a test approfonditi.

  • Il driver OLE DB per SQL Server prevede un controllo degli errori più rigido rispetto a MDAC. Ciò significa che le applicazioni che non sono completamente conformi alle specifiche OLE DB potrebbero avere un comportamento diverso. A differenza di OLE DB Driver per SQL Server, il provider SQLOLEDB, ad esempio, non ha applicato la regola in base alla quale i nomi dei parametri devono iniziare con "@" per i parametri del risultato.

  • OLE DB Driver per SQL Server si comporta in modo diverso rispetto a MDAC per le connessioni non riuscite. MDAC, ad esempio, restituisce valori delle proprietà memorizzati nella cache per una connessione non riuscita, mentre il driver OLE DB per SQL Server segnala un errore all'applicazione chiamante.

  • Il driver OLE DB per SQL Server non genera eventi di Visual Studio Analyzer, bensì eventi di traccia di Windows.

  • Non è possibile usare OLE DB Driver per SQL Server con perfmon. Perfmon è un strumento di Windows disponibile solo con i DSN che utilizzano il driver MDAC SQLODBC incluso in Windows.

  • Quando OLE DB Driver per SQL Server è connesso a SQL Server 2005 (9.x) e versioni successive, l'errore del server 16947 restituito è SQL_ERROR. Tale errore si verifica quando tramite un'eliminazione o un aggiornamento posizionato non è possibile aggiornare o eliminare una riga. Con MDAC, in caso di connessione a una versione qualsiasi di SQL Server, l'errore del server 16947 viene restituito come avviso (SQL_SUCCESS_WITH_INFO).

  • Il driver OLE DB per SQL Server implementa l'interfaccia IDBDataSourceAdmin, ovvero un'interfaccia OLE DB facoltativa non implementata in precedenza, di cui tuttavia viene implementato solo il metodo CreateDataSource. Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.

  • Il driver OLE DB per SQL Server restituisce sinonimi nei set di righe degli schemi TABLES e TABLE_INFO, con TABLE_TYPE impostato su SYNONYM.

  • I valori restituiti del tipo di dati varchar(max), nvarchar(max), varbinary(max), xml, udt o altri tipi LOB non possono essere restituiti a versioni client precedenti a SQL Server 2005 (9.x). Se si vuole usare questi tipi come valori restituiti, è necessario usare OLE DB Driver per SQL Server.

  • A differenza del driver OLE DB per SQL Server, MDAC consente l'esecuzione delle istruzioni seguenti all'inizio delle transazioni manuali e implicite. L'esecuzione deve avvenire in modalità autocommit.

    • Tutte le operazioni full-text (DLL indice e catalogo)

    • Tutte le operazioni del database (creazione, modifica ed eliminazione del database)

    • Riconfigurare

    • Arresto

    • Kill (Uccidi)

    • Backup

  • Quando le applicazioni MDAC si connettono a SQL Server, i tipi di dati introdotti in SQL Server 2005 (9.x) verranno visualizzati come tipi di dati compatibili con SQL Server 2000 (8.x) come illustrato nella tabella seguente.

    Tipo di SQL Server 2005 Tipo di SQL Server 2000
    varchar(max) Testo
    nvarchar(max) ntext
    varbinary(max) Immagine
    udt varbinary
    xml ntext

    Questo mapping dei tipi influisce sui valori restituiti per i metadati delle colonne. Ad esempio, una colonna text ha una dimensione massima di 2.147.483.647, mentre OLE DB Driver per SQL Server indica le dimensioni massime delle colonne varchar(max) come 2.147.483.647 o -1, a seconda della piattaforma.

  • Il driver OLE DB per SQL Server supporta l'ambiguità nelle stringhe di connessione. In pratica, alcune parole chiave possono essere specificate più volte e, qualora siano in conflitto, viene adottata una risoluzione basata sulla posizione o sulla precedenza per garantire la compatibilità con le versioni precedenti. Nelle versioni future di OLE DB Driver for SQL Server è possibile che non sia più consentita l'ambiguità nelle stringhe di connessione. Quando si modificano le applicazioni, è consigliabile usare il driver OLE DB per SQL Server per eliminare l'eventuale dipendenza dall'ambiguità delle stringhe di connessione.

  • Se si usa una chiamata OLE DB per avviare le transazioni, OLE DB Driver per SQL Server e MDAC presentano un comportamento diverso. Con OLE DB Driver per SQL Server le transazioni hanno inizio immediatamente, mentre con MDAC si attende il primo accesso al database. Questo può influire sul comportamento di stored procedure e batch in quanto per SQL Server è necessario che @@TRANCOUNT non cambi al termine dell'esecuzione di un batch o di una stored procedure.

  • Con OLE DB Driver per SQL Server, ITransactionLocal::BeginTransaction provocherà l'avvio immediato di una transazione. Con MDAC l'avvio della transazione viene ritardato fino all'esecuzione da parte dell'applicazione di un'istruzione che ha richiesto una transazione in modalità implicita. Per altre informazioni, vedere SET IMPLICIT_TRANSACTIONS (Transact-SQL).

Sia OLE DB Driver per SQL Server che MDAC supportano l'isolamento delle transazioni Read Committed tramite il controllo delle versioni delle righe, ma solo OLE DB Driver per SQL Server supporta l'isolamento delle transazioni snapshot. In termini di programmazione, l'isolamento della transazione Read Committed mediante il controllo delle versioni delle righe equivale a una transazione Read Committed.

Vedi anche

Compilazione di applicazioni con il driver OLE DB per SQL Server