Condividi tramite


Aggiornamento di un'applicazione a SQL Server Native Client da MDAC

Esistono diverse differenze tra SQL Server Native Client e Microsoft Data Access Components (MDAC; a partire da Windows Vista, i componenti di accesso ai dati sono ora denominati Componenti di Accesso ai dati di Windows o Windows DAC). Sebbene entrambi forniscano l'accesso ai dati nativi ai database di SQL Server, SQL Server Native Client è stato progettato specificamente per esporre le nuove funzionalità di SQL Server 2005, mantenendo allo stesso tempo la compatibilità con le versioni precedenti.

Le informazioni contenute in questo argomento consentono di aggiornare l'applicazione MDAC (o Windows DAC) in modo che sia aggiornata con la versione di SQL Server Native Client inclusa in SQL Server 2005. Per rendere questa applicazione aggiornata con la versione di SQL Server Native Client fornita in SQL Server 2014, vedere Aggiornamento di un'applicazione da SQL Server 2005 Native Client.

Inoltre, anche se MDAC contiene componenti per l'uso di OLE DB, ODBC e ActiveX Data Objects (ADO), SQL Server Native Client implementa solo OLE DB e ODBC (anche se ADO può accedere alla funzionalità di SQL Server Native Client).

SQL Server Native Client e MDAC differiscono nelle altre aree seguenti:

  • Gli utenti che usano ADO per accedere a un provider SQL Server Native Client possono trovare meno funzionalità di filtro rispetto a quando hanno eseguito l'accesso a un provider SQL OLE DB.

  • Se un'applicazione ADO usa SQL Server Native Client e tenta di aggiornare una colonna calcolata, verrà segnalato un errore. Con MDAC l'aggiornamento è stato accettato ma ignorato.

  • SQL Server Native Client è un singolo file DLL (Dynamic Link Library). Le interfacce esposte pubblicamente sono state mantenute al minimo, sia per semplificare la distribuzione, sia per limitare l'esposizione alla sicurezza.

  • Sono supportate solo le interfacce OLE DB e ODBC.

  • Il provider OLE DB di SQL Server Native Client e i nomi dei driver ODBC sono diversi da quelli usati con MDAC.

  • La funzionalità accessibile dall'utente fornita dai componenti MDAC è disponibile quando si usa SQL Server Native Client. Ciò include, ma non solo, quanto segue: pool di connessioni, supporto ADO e supporto del cursore client. Quando si usa una di queste funzionalità, SQL Server Native Client fornisce solo la connettività del database. MDAC offre funzionalità come traccia, controlli di gestione e contatori delle prestazioni.

  • Le applicazioni possono usare i servizi di base OLE DB con SQL Server Native Client, ma se si usa il motore di cursore OLE DB, è consigliabile usare l'opzione di compatibilità dei tipi di dati per evitare potenziali problemi che potrebbero verificarsi perché il motore di cursore non conosce i nuovi tipi di dati di SQL Server 2005.

  • SQL Server Native Client supporta l'accesso ai database di SQL Server precedenti.

  • SQL Server Native Client non contiene l'integrazione XML. SQL Server Native Client supporta SELECT ... Query FOR XML, ma non supporta altre funzionalità XML. SQL Server Native Client supporta tuttavia il xml tipo di dati introdotto in SQL Server 2005.

  • SQL Server Native Client supporta la configurazione delle librerie di rete lato client usando solo gli attributi della stringa di connessione. Se è necessaria una configurazione più completa della libreria di rete, è necessario usare Gestione configurazione SQL Server.

  • SQL Server Native Client non è compatibile con odbcbcp.dll. Le applicazioni che usano api ODBC e bcp devono essere ricompilate per collegarsi a sqlncli11.lib per usare SQL Server Native Client.

  • SQL Server Native Client non è supportato dal provider Microsoft OLE DB per ODBC (MSDASQL). Se si usa il driver SQLODBC MDAC con il driver MSDASQL o MDAC SQLODBC con ADO, usare OLE DB in SQL Server Native Client..

  • Le stringhe di connessione MDAC consentono un valore booleano (true) per la parola chiave Trusted_Connection . Una stringa di connessione di SQL Server Native Client deve usare yes o no.

  • Si sono verificate modifiche minime agli avvisi e agli errori. Gli avvisi e gli errori restituiti dal server mantengono ora la stessa gravità quando vengono passati a SQL Server Native Client. È necessario assicurarsi di aver testato accuratamente l'applicazione se si dipende dall'intercettazione di particolari avvisi ed errori.

  • SQL Server Native Client ha un controllo degli errori più rigoroso di MDAC, il che significa che alcune applicazioni che non sono conformi rigorosamente alle specifiche ODBC e OLE DB possono comportarsi in modo diverso. Ad esempio, il provider SQLOLEDB non ha applicato la regola che i nomi dei parametri devono iniziare con '@' per i parametri dei risultati, ma il provider OLE DB di SQL Server Native Client.

  • SQL Server Native Client si comporta in modo diverso rispetto a MDAC per quanto riguarda le connessioni non riuscite. Ad esempio, MDAC restituisce i valori delle proprietà memorizzati nella cache per una connessione non riuscita, mentre SQL Server Native Client segnala un errore all'applicazione chiamante.

  • SQL Server Native Client non genera eventi di Visual Studio Analyzer, ma genera invece eventi di traccia di Windows.

  • SQL Server Native Client non può essere usato con perfmon. Perfmon è uno strumento di Windows che può essere usato solo con DSN che usano il driver SQLODBC MDAC incluso in Windows.

  • Quando SQL Server Native Client è connesso a SQL Server 2005 e versioni successive, l'errore del server 16947 viene restituito come SQL_ERROR. Questo errore si verifica quando un aggiornamento o un'eliminazione posizionata non riesce ad aggiornare o eliminare una riga. Con MDAC durante la connessione a qualsiasi versione di SQL Server, l'errore del server 16947 viene restituito come avviso (SQL_SUCCESS_WITH_INFO).

  • SQL Server Native Client implementa l'interfaccia IDBDataSourceAdmin , che è un'interfaccia OLE DB facoltativa non implementata in precedenza, ma viene implementato solo il metodo CreateDataSource di questa interfaccia facoltativa. Questa funzionalità verrà rimossa in una versione futura di Microsoft 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 provider OLE DB di SQL Server Native Client restituisce sinonimi nei set di righe dello schema TABLES e TABLE_INFO, con TABLE_TYPE impostato su SYNONYM.

  • I valori restituiti di tipo di varchar(max)dati , nvarchar(max)varbinary(max), xml, udt, o altri tipi di oggetti di grandi dimensioni non possono essere restituiti alle versioni client precedenti a SQL Server 2005. Se si desidera usare questi tipi come valori restituiti, è necessario usare SQL Server Native Client.

  • MDAC consente l'esecuzione delle istruzioni seguenti all'inizio di transazioni manuali e implicite, ma SQL Server Native Client non lo fa. Devono essere eseguiti in modalità autocommit.

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

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

    • Riconfigurare

    • Chiusura

    • Uccidere

    • salvataggio dei dati

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

    Tipo di SQL Server 2005 Tipo SQL Server 2000
    varchar(max) text
    nvarchar(max) ntext
    varbinary(max) image
    udt varbinary
    xml ntext

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

  • SQL Server Native Client consente ambiguità nelle stringhe di connessione (ad esempio, alcune parole chiave possono essere specificate più volte e le parole chiave in conflitto possono essere consentite con risoluzione in base alla posizione o alla precedenza) per motivi di compatibilità con le versioni precedenti. Le versioni future di SQL Server Native Client potrebbero non consentire ambiguità nelle stringa di connessione. È consigliabile modificare le applicazioni per usare SQL Server Native Client per eliminare qualsiasi dipendenza da stringa di connessione ambiguità.

  • Se si usa una chiamata ODBC o OLE DB per avviare le transazioni, esiste una differenza nel comportamento tra SQL Server Native Client e MDAC; le transazioni inizieranno immediatamente con SQL Server Native Client, ma le transazioni inizieranno dopo il primo accesso al database tramite MDAC. Ciò può influire sul comportamento delle stored procedure e dei batch perché SQL Server richiede che @@TRANCOUNT essere lo stesso dopo il completamento dell'esecuzione di un batch o di una stored procedure durante l'avvio del batch o della stored procedure.

  • Con SQL Server Native Client, ITransactionLocal::BeginTransaction causerà l'avvio immediato di una transazione. Con MDAC l'avvio della transazione è stato ritardato fino a quando l'applicazione ha eseguito un'istruzione che richiedeva una transazione in modalità transazione implicita. Per altre informazioni, vedere SET IMPLICIT_TRANSACTIONS (Transact-SQL).

  • È possibile che si verifichino errori quando si usa il driver SQL Server Native Client con System.Data.Odbc per accedere a un computer server SQL Server che espone nuovi tipi di dati o funzionalità specifici di SQL Server. System.Data.Odbc fornisce un'implementazione ODBC generica e successivamente non espone funzionalità o estensioni specifiche del fornitore. Il driver SQL Server Native Client viene aggiornato per supportare in modo nativo le funzionalità più recenti di SQL Server. Per risolvere questo problema, è possibile ripristinare MDAC o eseguire la migrazione a System.Data.SqlClient.

SIA SQL Server Native Client che MDAC supportano l'isolamento delle transazioni read committed tramite il controllo delle versioni delle righe, ma solo SQL Server Native Client supporta l'isolamento delle transazioni snapshot. In termini di programmazione, l'isolamento delle transazioni read committed tramite il controllo delle versioni delle righe è uguale a quello della transazione read-committed.

Vedere anche

Compilazione di applicazioni con SQL Server Native Client