Mise à jour d'une application vers SQL Server Native Client à partir de MDACUpdating an Application to SQL Server Native Client from MDAC

Cette rubrique s’applique à : OuiSQL ServerOuibase de données SQL AzureOuiAzure SQL Data Warehouse Oui Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Il existe plusieurs différences entre SQL ServerSQL Server Native Client et MDAC (Microsoft Data Access Components). Notez qu'à compter de Windows Vista, MDAC prend le nom de « Windows DAC » (Windows Data Access Components).There are a number of differences between SQL ServerSQL Server Native Client and Microsoft Data Access Components (MDAC; starting with Windows Vista, the data access components are now called Windows Data Access Components, or Windows DAC). Même si ces deux solutions fournissent aux données natives un accès aux bases de données SQL ServerSQL Server, SQL ServerSQL Server Native Client a été spécialement conçu pour exposer les nouvelles fonctionnalités de SQL Server 2005SQL Server 2005, tout en restant compatible avec les versions antérieures.Although both provide native data access to SQL ServerSQL Server databases, SQL ServerSQL Server Native Client has been specifically designed to expose the new features of SQL Server 2005SQL Server 2005, while at the same time maintaining backward compatibility with earlier versions.

Les informations contenues dans cette rubrique permettent de mettre à jour votre application MDAC (ou Windows DAC) pour la rendre conforme à la version de SQL ServerSQL Server Native Client fournie avec SQL Server 2005SQL Server 2005.The information in this topic helps update your MDAC (or Windows DAC) application to be current with the version of SQL ServerSQL Server Native Client that was included in SQL Server 2005SQL Server 2005. Pour vous aider à rendre cette application en cours avec la version de SQL ServerSQL Server Native Client fournie avec SQL Server 2017SQL Server 2017, consultez mise à jour d’une Application à partir de SQL Server 2005 Native Client.To help you make this application be current with the version of SQL ServerSQL Server Native Client that shipped in SQL Server 2017SQL Server 2017, see Updating an Application from SQL Server 2005 Native Client.

Par ailleurs, bien que MDAC contienne des composants permettant d'utiliser OLE DB, ODBC et des objets ADO (ActiveX Data Object), SQL ServerSQL Server Native Client implémente uniquement OLE DB et ODBC (bien que les objets ADO puissent accéder aux fonctionnalités de SQL ServerSQL Server Native Client).In addition, although MDAC contains components for using OLE DB, ODBC, and ActiveX Data Objects (ADO), SQL ServerSQL Server Native Client only implements OLE DB and ODBC (although ADO can access the functionality of SQL ServerSQL Server Native Client).

SQL ServerSQL Server Native Client et MDAC diffèrent également dans les domaines suivants : Native Client and MDAC differ in the other following areas:

  • Les utilisateurs qui utilisent des objets ADO pour accéder à un fournisseur SQL ServerSQL Server Native Client peuvent trouver moins de fonctionnalités de filtrage qu'en accédant à un fournisseur OLE DB SQL.Users who use ADO to access a SQL ServerSQL Server Native Client provider may find less filtering functionality than when they accessed a SQL OLE DB provider.

  • Si une application ADO utilise SQL ServerSQL Server Native Client et qu'elle tente de mettre à jour une colonne calculée, une erreur est signalée.If an ADO application uses SQL ServerSQL Server Native Client and attempts to update a computed column, an error will be reported. Avec MDAC, la mise à jour était acceptée mais ignorée.With MDAC the update was accepted but ignored.

  • SQL ServerSQL Server Native Client est un fichier bibliothèque de liens dynamiques (DLL) autonome unique. Native Client is a single self-contained dynamic link library (DLL) file. Les interfaces exposées publiquement ont été limitées en nombre pour faciliter la distribution et limiter l'exposition de sécurité.The publicly exposed interfaces have been kept to a minimum, both to ease distribution, as well as to limit security exposure.

  • Seules les interfaces OLE DB et ODBC sont prises en charge.Only OLE DB and ODBC interfaces are supported.

  • Le fournisseur OLE DB Native Client SQL ServerSQL Server et les noms de pilote ODBC sont différents de ceux utilisés avec MDAC.The SQL ServerSQL Server Native Client OLE DB provider and ODBC driver names are different from those used with MDAC.

  • Les fonctionnalités accessibles à l'utilisateur fournies par les composants MDAC sont disponibles lorsque vous utilisez SQL ServerSQL Server Native Client.User-accessible functionality supplied by MDAC components is available when using SQL ServerSQL Server Native Client. Cela comprend, entre autres, le regroupement de connexions, la prise en charge des objets ADO et la prise en charge du curseur client.This includes, but is not limited to, the following: connection pooling, ADO support, and client cursor support. Lorsque l'une de ces fonctionnalités est utilisée, SQL ServerSQL Server Native Client fournit uniquement la connectivité de base de données.When any of these features are used, SQL ServerSQL Server Native Client supplies only database connectivity. MDAC fournit des fonctionnalités telles que le suivi, des contrôles de gestion et des compteurs de performance.MDAC provides functionality such as tracing, management controls, and performance counters.

  • Les applications peuvent utiliser les services principaux OLE DB avec SQL ServerSQL Server Native Client, mais si elles utilisent le moteur de curseur OLE DB, elles doivent utiliser l'option de compatibilité du type de données pour éviter tout problème pouvant résulter du fait que le moteur de curseur n'a pas connaissance des nouveaux types de données SQL Server 2005SQL Server 2005.Applications can use OLE DB core services with SQL ServerSQL Server Native Client, but if using the OLE DB cursor engine, they should use the data type compatibility option to avoid any potential problems that might arise because the cursor engine has no knowledge of the new SQL Server 2005SQL Server 2005 data types.

  • SQL ServerSQL Server Native Client prend en charge l'accès aux bases de données SQL ServerSQL Server précédentes. Native Client supports access to previous SQL ServerSQL Server databases.

  • SQL ServerSQL Server Native Client n'offre pas l'intégration XML. Native Client does not contain XML integration. SQL ServerSQL Server Native Client prend en charge SELECT... Native Client supports SELECT … POUR les requêtes de XML, mais ne prend pas en charge d’autres fonctionnalités XML.FOR XML queries, but does not support any other XML functionality. Toutefois, SQL ServerSQL Server Native Client ne prend pas en charge la xml type de données introduits dans SQL Server 2005SQL Server 2005.However, SQL ServerSQL Server Native Client does support the xml data type introduced in SQL Server 2005SQL Server 2005.

  • SQL ServerSQL Server Native Client prend uniquement en charge la configuration de bibliothèques réseau côté client à l'aide d'attributs de chaîne de connexion. Native Client supports configuring client-side network libraries using only connection string attributes. Pour configurer une bibliothèque réseau de manière plus complète, vous devez utiliser le Gestionnaire de configuration SQL ServerSQL Server.If you need more complete network library configuration, you must use SQL ServerSQL Server Configuration Manager.

  • SQL ServerSQL Server Native Client n'est pas compatible avec odbcbcp.dll. Native Client is not compatible with odbcbcp.dll. Les applications qui utilisent les deux ODBC et bcp API doit être reconstruites pour établir un lien vers sqlncli11.lib afin d’utiliser SQL ServerSQL Server Native Client.Applications that use both ODBC and bcp APIs must be rebuilt to link with sqlncli11.lib in order to use SQL ServerSQL Server Native Client.

  • SQL ServerSQL Server Native Client n'est pas pris en charge à partir du fournisseur Microsoft OLE DB pour ODBC (MSDASQL). Native Client is not supported from the Microsoft OLE DB provider for ODBC (MSDASQL). Si vous utilisez le pilote MDAC SQLODBC avec MSDASQL ou le pilote MDAC SQLODBC avec ADO, utilisez OLE DB dans SQL ServerSQL Server Native Client.If you are using the MDAC SQLODBC driver with MSDASQL or MDAC SQLODBC driver with ADO, use OLE DB in SQL ServerSQL Server Native Client..

  • Chaînes de connexion MDAC autorisent une valeur booléenne (true) pour le Trusted_Connection (mot clé).MDAC connection strings allow a Boolean value (true) for the Trusted_Connection keyword. A SQL ServerSQL Server chaîne de connexion Native Client doit utiliser Oui ou aucun.A SQL ServerSQL Server Native Client connection string must use yes or no.

  • Des changements mineurs affectent les avertissements et les erreurs.Minor changes have occurred to warnings and errors. Les avertissements et les erreurs retournées par le serveur conservent désormais la même gravité lorsqu'ils sont passés à SQL ServerSQL Server Native Client.Warnings and errors returned by the server now retain the same severity when passed to SQL ServerSQL Server Native Client. Vous devez vous assurer d'avoir rigoureusement testé votre application si vous comptez sur l'interception d'avertissements et d'erreurs particuliers.You should ensure you have thoroughly tested your application if you depend on trapping particular warnings and errors.

  • SQL ServerSQL Server Native Client effectue une vérification des erreurs plus stricte que MDAC, ce qui signifie que certaines applications qui ne sont pas strictement conformes aux spécifications ODBC et OLE DB peuvent se comporter différemment. Native Client has stricter error checking than MDAC, which means that some applications that do not conform strictly to the ODBC and OLE DB specifications may behave differently. Par exemple, contrairement au fournisseur OLE DB SQL ServerSQL Server Native Client, le fournisseur SQLOLEDB n'applique pas la règle selon laquelle les noms de paramètre doivent commencer par « @ »pour les paramètres de résultat.For example, the SQLOLEDB provider did not enforce the rule that parameter names must start with '@' for result parameters, but the SQL ServerSQL Server Native Client OLE DB provider does.

  • SQL ServerSQL Server Native Client se comporte différemment de MDAC en ce qui concerne les connexions échouées. Native Client behaves differently from MDAC in regards to failed connections. Par exemple, MDAC retourne des valeurs de propriété mises en cache pour une connexion qui a échoué, alors que SQL ServerSQL Server Native Client signale une erreur à l'application appelante.For example, MDAC returns cached property values for a connection that has failed, whereas SQL ServerSQL Server Native Client reports an error to the calling application.

  • SQL ServerSQL Server Native Client ne génère pas d'événements Visual Studio Analyzer, mais il génère à la place des événements de suivi Windows. Native Client does not generate Visual Studio Analyzer events, but instead generates Windows tracing events.

  • SQL ServerSQL Server Native Client ne peut pas être utilisé avec perfmon. Native Client cannot be used with perfmon. Perfmon est un outil Windows qui peut être uniquement utilisé avec des noms de source de données (DSN) qui utilisent le pilote MDAC SQLODBC inclus avec Windows.Perfmon is a Windows tool that can only be used with DSNs that use the MDAC SQLODBC driver included with Windows.

  • Lorsque SQL ServerSQL Server Native Client est connecté à SQL Server 2005SQL Server 2005 et versions ultérieures, l'erreur de serveur 16947 est retournée en tant qu'erreur (SQL_ERROR).When SQL ServerSQL Server Native Client is connected to SQL Server 2005SQL Server 2005 and later versions, server error 16947 is returned as a SQL_ERROR. Cette erreur se produit lorsqu'une mise à jour ou une suppression positionnée ne parvient pas à mettre à jour ou à supprimer une ligne.This error occurs when a positioned update or delete fails to update or delete a row. Avec MDAC lors de la connexion à n'importe quelle version de SQL ServerSQL Server, l'erreur de serveur 16947 est retournée en tant qu'avertissement (SQL_SUCCESS_WITH_INFO).With MDAC when connecting to any version of SQL ServerSQL Server, server error 16947 is returned as a warning (SQL_SUCCESS_WITH_INFO).

  • SQL ServerSQL Server Native Client implémente le IDBDataSourceAdmin d’interface, qui est une interface OLE DB facultative qui n’était pas précédemment implémentée, mais seule la CreateDataSource ce Optional (méthode) interface est implémentée. Native Client implements the IDBDataSourceAdmin interface, which is an optional OLE DB interface that was not previously implemented, but only the CreateDataSource method of this optional interface is implemented. Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server.This feature will be removed in a future version of Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

  • Le fournisseur OLE DB SQL ServerSQL Server Native Client retourne des synonymes dans les ensembles de lignes de schéma TABLES et TABLE_INFO, avec la valeur SYNONYM attribuée à TABLE_TYPE.The SQL ServerSQL Server Native Client OLE DB provider returns synonyms in the TABLES and TABLE_INFO schema rowsets, with TABLE_TYPE set to SYNONYM.

  • Retourner des valeurs de type de données varchar (max), nvarchar (max), varbinary (max), xml, udt, ou d’autres types d’objet volumineux ne peuvent pas être retournés pour les versions client antérieures à SQL Server 2005SQL Server 2005.Return values of data type varchar(max), nvarchar(max), varbinary(max), xml, udt, or other large object types can not be returned to client versions earlier than SQL Server 2005SQL Server 2005. Si vous souhaitez utiliser ces types comme valeurs de retour, vous devez utiliser SQL ServerSQL Server Native Client.If you wish to use these types as return values, you must use SQL ServerSQL Server Native Client.

  • Contrairement à SQL ServerSQL Server Native Client, MDAC permet l'exécution des instructions suivantes au démarrage de transactions manuelles et implicites.MDAC allows the following statements to be executed at the start of manual and implicit transactions, but SQL ServerSQL Server Native Client does not. Elles doivent être exécutées en mode de validation automatique.They must be executed in autocommit mode.

    • Tous les opérations de texte intégral (DDL d'index et de catalogue)All full-text operations (index and catalog DDL)

    • Toutes les opérations de base de données (create database, alter database, drop database)All database operations (create database, alter database, drop database)

    • ReconfigurationReconfigure

    • ArrêterShutdown

    • KillKill

    • BackupBackup

  • Lorsque des applications MDAC se connectent à SQL ServerSQL Server, les types de données introduits dans SQL Server 2005SQL Server 2005 apparaissent en tant que types de données compatibles avec SQL Server 2000 (8.x)SQL Server 2000 (8.x), comme indiqué dans le tableau suivant.When MDAC applications connect to SQL ServerSQL Server, the data types introduced in SQL Server 2005SQL Server 2005 will appear as SQL Server 2000 (8.x)SQL Server 2000 (8.x)-compatible data types as shown in the following table.

    Type SQL Server 2005SQL Server 2005 type Type SQL Server 2000SQL Server 2000 type
    varchar(max)varchar(max) texttext
    nvarchar(max)nvarchar(max) ntextntext
    varbinary(max)varbinary(max) imageimage
    udtudt varbinaryvarbinary
    xmlxml ntextntext

    Ce mappage de type affecte les valeurs retournées pour les métadonnées de colonne.This type mapping affects the values returned for column metadata. Par exemple, un texte colonne a une taille maximale de 2 147 483 647, mais SQL ServerSQL Server ODBC Native Client signale la taille maximale de varchar (max) colonnes en tant que SQL_SS_LENGTH_UNLIMITED, et SQL ServerSQL Server OLE DB Native Client signale la taille maximale de varchar (max) colonnes en tant que 2 147 483 647 ou -1, en fonction de la plateforme.For example, a text column has a maximum size of 2,147,483,647, but SQL ServerSQL Server Native Client ODBC reports the maximum size of varchar(max) columns as SQL_SS_LENGTH_UNLIMITED, and SQL ServerSQL Server Native Client OLE DB reports the maximum size of varchar(max) columns as 2,147,483,647 or -1, depending on platform.

  • SQL ServerSQL Server Native Client autorise l'ambiguïté dans les chaînes de connexion (par exemple, quelques mots clés peuvent être spécifiés plusieurs fois et des mots clés en conflit peuvent être autorisés avec la résolution basée sur la position ou la précédence) pour des raisons de compatibilité descendante. Native Client allows ambiguity in connection strings (for example, some keywords may be specified more than once, and conflicting keywords may be allowed with resolution based on position or precedence) for reasons of backward compatibility. Les versions ultérieures de SQL ServerSQL Server Native Client n'autoriseront peut-être pas l'ambiguïté dans les chaînes de connexion.Future releases of SQL ServerSQL Server Native Client might not allow ambiguity in connection strings. Lors de la modification d'applications, il est conseillé d'utiliser SQL ServerSQL Server Native Client pour éliminer toute dépendance vis-à-vis de l'ambiguïté de chaîne de connexion.It is good practice when modifying applications to use SQL ServerSQL Server Native Client to eliminate any dependency on connection string ambiguity.

  • Si vous utilisez un appel ODBC ou OLE DB pour démarrer des transactions, une différence de comportement existe entre SQL ServerSQL Server Native Client et MDAC : les transactions commencent immédiatement avec SQL ServerSQL Server Native Client, tandis qu'elles commencent après le premier accès à la base de données avec MDAC.If you use an ODBC or OLE DB call to start transactions, there is a difference in behavior between SQL ServerSQL Server Native Client and MDAC; transactions will begin immediately with SQL ServerSQL Server Native Client, but transactions will begin after the first database access using MDAC. Cela peut affecter le comportement des procédures stockées et lots car SQL ServerSQL Server requiert@TRANCOUNT soient identiques après un lot ou une procédure stockée termine son exécution telle qu’elle était au démarrage de la procédure stockée ou le lot.This can affect the behavior of stored procedures and batches because SQL ServerSQL Server requires @@TRANCOUNT to be the same after a batch or stored procedure finishes execution as it was when the batch or stored procedure started.

  • Avec SQL ServerSQL Server Native Client, ITransactionLocal::BeginTransaction entraîne une transaction doit être démarré immédiatement.With SQL ServerSQL Server Native Client, ITransactionLocal::BeginTransaction will cause a transaction to be started immediately. Avec MDAC le démarrage de transaction est différé jusqu'à ce que l'application exécute une instruction qui requiert une transaction en mode de transaction implicite.With MDAC the transaction start was delayed until the application executed a statement which required a transaction in implicit transaction mode. Pour plus d’informations, consultez SET IMPLICIT_TRANSACTIONS (Transact-SQL).For more information, see SET IMPLICIT_TRANSACTIONS (Transact-SQL).

  • Vous pouvez rencontrer des erreurs lors de l’utilisation SQL ServerSQL Server pilote du Client natif avec System.Data.Odbc pour accéder à un SQL ServerSQL Server ordinateur du serveur qui expose de nouveaux SQL ServerSQL Server-types de données spécifiques ou des fonctionnalités.You might encounter errors when using SQL ServerSQL Server Native Client driver with System.Data.Odbc to access a SQL ServerSQL Server server computer that exposes new, SQL ServerSQL Server-specific data types or features. System.Data.Odbc fournit une implémentation ODBC générique et par la suite ne pas exposer des fonctionnalités spécifiques du fournisseur ou extensions.System.Data.Odbc provides a generic ODBC implementation and subsequently does not expose vendor specific functionality or extensions. (Le pilote de SQL ServerSQL Server Native Client est mis à jour pour prendre en charge les fonctionnalités les plus récentes de SQL ServerSQL Server en mode natif.) Pour contourner ce problème, vous pouvez rétablir MDAC ou migrer vers System.Data.SqlClient.(The SQL ServerSQL Server Native Client driver is updated to natively support the latest SQL ServerSQL Server features.) To workaround this issue, you can either revert to MDAC, or migrate to System.Data.SqlClient.

    SQL ServerSQL Server Native Client et MDAC prennent en charge l'isolation de la transaction de lecture validée à l'aide du contrôle de version de ligne, mais seul SQL ServerSQL Server Native Client prend en charge l'isolation de la transaction d'instantané.Both SQL ServerSQL Server Native Client and MDAC support read committed transaction isolation using row versioning, but only SQL ServerSQL Server Native Client supports snapshot transaction isolation. (En termes de programmation, l'isolation de la transaction de lecture validée à l'aide du contrôle de version de ligne est la même chose que la transaction de lecture validée.)(In programming terms, read committed transaction isolation using row versioning is the same as read-committed transaction.).

Voir aussiSee Also

Génération d’Applications avec SQL Server Native ClientBuilding Applications with SQL Server Native Client