Partager via


Mise à jour d'une application vers SQL Server Native Client à partir de MDAC

Il existe un certain nombre de différences entre SQL Server Native Client et les composants Microsoft Data Access (MDAC; à compter de Windows Vista, les composants d’accès aux données sont désormais appelés composants d’accès aux données Windows, ou Windows DAC). Bien que les deux fournissent un accès natif aux données SQL Server bases de données, SQL Server Native Client a été spécifiquement conçu pour exposer les nouvelles fonctionnalités de SQL Server 2005, tout en conservant la compatibilité descendante avec les versions antérieures.

Les informations contenues dans cette rubrique vous permettent de mettre à jour votre application MDAC (ou Windows DAC) pour qu’elle soit à jour avec la version de SQL Server Native Client qui a été incluse dans SQL Server 2005. Pour vous aider à mettre à jour cette application avec la version de SQL Server Native Client fournie dans SQL Server 2014, consultez Mise à jour d’une application à partir de SQL Server 2005 Native Client.

En outre, bien que MDAC contienne des composants permettant d’utiliser OLE DB, ODBC et ActiveX Data Objects (ADO), SQL Server Native Client implémente uniquement OLE DB et ODBC (bien qu’ADO puisse accéder aux fonctionnalités de SQL Server Native Client).

SQL Server Native Client et MDAC diffèrent dans les autres domaines suivants :

  • Les utilisateurs qui utilisent ADO pour accéder à un fournisseur de SQL Server Native Client peuvent trouver moins de fonctionnalités de filtrage que lorsqu’ils ont accédé à un fournisseur OLE DB SQL.

  • Si une application ADO utilise SQL Server Native Client et tente de mettre à jour une colonne calculée, une erreur est signalée. Avec MDAC, la mise à jour était acceptée mais ignorée.

  • SQL Server Native Client est un seul fichier de bibliothèque de liens dynamiques (DLL) autonome. Les interfaces exposées publiquement ont été limitées en nombre pour faciliter la distribution et limiter l'exposition de sécurité.

  • Seules les interfaces OLE DB et ODBC sont prises en charge.

  • Les noms SQL Server Native Client fournisseur OLE DB et de pilote ODBC sont différents de ceux utilisés avec MDAC.

  • Les fonctionnalités accessibles à l’utilisateur fournies par les composants MDAC sont disponibles lors de l’utilisation de SQL 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. Lorsque l’une de ces fonctionnalités est utilisée, SQL Server Native Client fournit uniquement la connectivité de base de données. MDAC fournit des fonctionnalités telles que le suivi, des contrôles de gestion et des compteurs de performance.

  • Les applications peuvent utiliser les services principaux OLE DB avec SQL Server Native Client, mais si elles utilisent le moteur de curseur OLE DB, elles doivent utiliser l’option de compatibilité de type de données pour éviter tout problème potentiel qui pourrait survenir, car le moteur de curseur n’a aucune connaissance des nouveaux types de données SQL Server 2005.

  • SQL Server Native Client prend en charge l’accès aux bases de données SQL Server précédentes.

  • SQL Server Native Client ne contient pas d’intégration XML. SQL Server Native Client prend en charge SELECT ... Les requêtes FOR XML, mais ne prennent pas en charge d’autres fonctionnalités XML. Toutefois, SQL Server Native Client prend en charge le xml type de données introduit dans SQL Server 2005.

  • SQL Server Native Client prend en charge la configuration des bibliothèques réseau côté client à l’aide uniquement d’attributs de chaîne de connexion. Pour configurer une bibliothèque réseau de manière plus complète, vous devez utiliser le Gestionnaire de configuration SQL Server.

  • SQL Server Native Client n’est pas compatible avec odbcbcp.dll. Les applications qui utilisent à la fois les API ODBC et bcp doivent être reconstruites pour être liées à sqlncli11.lib afin d’utiliser SQL Server Native Client.

  • SQL Server Native Client n’est pas pris en charge par le fournisseur Microsoft OLE DB pour ODBC (MSDASQL). Si vous utilisez le pilote SQLODBC MDAC avec MSDASQL ou le pilote MDAC SQLODBC avec ADO, utilisez OLE DB dans SQL Server Native Client..

  • Les chaînes de connexion MDAC autorisent une valeur booléenne (true) pour le mot clé Trusted_Connection. Une chaîne de connexion SQL Server Native Client doit utiliser yes ou non.

  • Des changements mineurs affectent les avertissements et les erreurs. Les avertissements et les erreurs retournés par le serveur conservent désormais la même gravité lorsqu’ils sont passés à SQL 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.

  • SQL Server Native Client a 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. Par exemple, le fournisseur SQLOLEDB n’a pas appliqué la règle selon laquelle les noms de paramètres doivent commencer par « @ » pour les paramètres de résultat, mais le SQL Server Native Client fournisseur OLE DB le fait.

  • SQL Server Native Client se comporte différemment de MDAC en ce qui concerne les connexions ayant échoué. Par exemple, MDAC retourne des valeurs de propriété mises en cache pour une connexion qui a échoué, tandis que SQL Server Native Client signale une erreur à l’application appelante.

  • SQL Server Native Client ne génère pas d’événements Visual Studio Analyzer, mais génère à la place des événements de suivi Windows.

  • SQL Server Native Client ne peut pas être utilisé avec 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.

  • Lorsque SQL Server Native Client est connecté à SQL Server 2005 et versions ultérieures, l’erreur de serveur 16947 est retournée en tant que SQL_ERROR. Cette erreur se produit lorsqu'une mise à jour ou une suppression positionnée ne parvient pas à mettre à jour ou à supprimer une ligne. Avec MDAC lors de la connexion à n'importe quelle version de SQL Server, l'erreur de serveur 16947 est retournée en tant qu'avertissement (SQL_SUCCESS_WITH_INFO).

  • SQL Server Native Client implémente l’interface IDBDataSourceAdmin, qui est une interface OLE DB facultative qui n’a pas été implémentée précédemment, mais seule la méthode CreateDataSource de cette interface facultative est implémentée. Cette fonctionnalité sera supprimée dans une prochaine version de 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é.

  • Le fournisseur OLE DB SQL Server Native Client retourne des synonymes dans les ensembles de lignes TABLES et TABLE_INFO schéma, avec TABLE_TYPE défini sur SYNONYM.

  • Les valeurs de retour de type varchar(max)de données , nvarchar(max), varbinary(max)xml, udt, ou d’autres types d’objets volumineux ne peuvent pas être retournées aux versions client antérieures à SQL Server 2005. Si vous souhaitez utiliser ces types comme valeurs de retour, vous devez utiliser SQL Server Native Client.

  • MDAC permet d’exécuter les instructions suivantes au début des transactions manuelles et implicites, mais SQL Server Native Client ne le fait pas. Elles doivent être exécutées en mode de validation automatique.

    • Tous les opérations de texte intégral (DDL d'index et de catalogue)

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

    • Reconfigurer

    • Shutdown

    • Tuer

    • Backup

  • Lorsque les applications MDAC se connectent à SQL Server, les types de données introduits dans SQL Server 2005 apparaissent en tant que types de données compatibles SQL Server 2000, comme indiqué dans le tableau suivant.

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

    Ce mappage de type affecte les valeurs retournées pour les métadonnées de colonne. Par exemple, une text colonne a une taille maximale de 2 147 483 647, mais SQL Server Native Client ODBC signale la taille maximale des varchar(max) colonnes en tant que SQL_SS_LENGTH_UNLIMITED, et SQL Server Native Client OLE DB indique la taille maximale des varchar(max) colonnes de 2 147 483 647 ou -1, selon la plateforme.

  • SQL Server Native Client autorise l’ambiguïté dans les chaînes de connexion (par exemple, certains mots clés peuvent être spécifiés plusieurs fois, et les mots clés en conflit peuvent être autorisés avec une résolution basée sur la position ou la précédence) pour des raisons de compatibilité descendante. Les versions ultérieures de SQL Server Native Client peuvent ne pas autoriser l’ambiguïté dans les chaînes de connexion. Il est recommandé de modifier des applications pour utiliser SQL Server Native Client afin d’éliminer toute dépendance vis-à-vis de l’ambiguïté des chaînes de connexion.

  • Si vous utilisez un appel ODBC ou OLE DB pour démarrer des transactions, il existe une différence de comportement entre SQL Server Native Client et MDAC ; les transactions commencent immédiatement par SQL Server Native Client, mais les transactions commencent après le premier accès à la base de données à l’aide de MDAC. Cela peut affecter le comportement de procédures stockées et de lots, car SQL Server exige que @@TRANCOUNT soit identique au démarrage et à la fin de l’exécution d’un lot ou d’une procédure stockée.

  • Avec SQL Server Native Client, ITransactionLocal::BeginTransaction entraîne le démarrage immédiat d’une transaction. 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. Pour plus d’informations, consultez SET IMPLICIT_TRANSACTIONS (Transact-SQL).

  • Vous pouvez rencontrer des erreurs lors de l’utilisation d’SQL Server Native Client pilote avec System.Data.Odbc pour accéder à un ordinateur serveur SQL Server qui expose de nouveaux types de données ou fonctionnalités spécifiques à SQL Server. System.Data.Odbc fournit une implémentation ODBC générique et n’expose par la suite pas de fonctionnalités ou d’extensions spécifiques au fournisseur. (Le pilote SQL Server Native Client est mis à jour pour prendre en charge en mode natif les dernières fonctionnalités SQL Server.) Pour contourner ce problème, vous pouvez revenir à MDAC ou migrer vers System.Data.SqlClient.

Les deux SQL Server Native Client et MDAC prennent en charge l’isolation des transactions validées en lecture à l’aide du contrôle de version de ligne, mais seules les SQL Server Native Client prennent en charge l’isolation des transactions instantané. (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.)

Voir aussi

Génération d’applications avec SQL Server Native Client