Partager via


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

Il existe plusieurs différences entre SQL Server Native Client et Microsoft Data Access Components (MDAC ; à compter de Windows Vista, les composants d’accès aux données sont maintenant appelés Composants d’accès aux données Windows ou DAC Windows). Bien que les deux fournissent un accès natif aux bases de données SQL Server, 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 permettent de mettre à jour votre application MDAC (ou DAC Windows) pour qu’elle soit actuelle avec la version de SQL Server Native Client incluse dans SQL Server 2005. Pour vous aider à rendre cette application actuelle 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 pour l’utilisation d’OLE DB, ODBC et ActiveX Data Objects (ADO), SQL Server Native Client implémente uniquement OLE DB et ODBC (bien que 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 SQL Server Native Client peuvent trouver moins de fonctionnalités de filtrage que lorsqu’ils ont accédé à un fournisseur SQL OLE DB.

  • 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 a été acceptée mais ignorée.

  • SQL Server Native Client est un seul fichier de bibliothèque de liens dynamiques autonome (DLL). Les interfaces exposées publiquement ont été conservées au minimum, à la fois pour faciliter la distribution, ainsi que pour limiter l’exposition de la sécurité.

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

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

  • Les fonctionnalités accessibles par l’utilisateur fournies par les composants MDAC sont disponibles lors de l’utilisation de SQL Server Native Client. Cela inclut, mais n’est pas limité à ce qui suit : regroupement de connexions, prise en charge ADO et prise en charge du curseur client. Quand 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, les contrôles de gestion et les compteurs de performances.

  • 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 pouvant 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. Si vous avez besoin d’une configuration de bibliothèque réseau 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 des API ODBC et bcp doivent être reconstruites pour établir une liaison avec sqlncli11.lib afin d’utiliser SQL Server Native Client.

  • SQL Server Native Client n’est pas pris en charge à partir du fournisseur Microsoft OLE DB pour ODBC (MSDASQL). Si vous utilisez le pilote SQLODBC MDAC avec MSDASQL ou 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 être utilisée yes ou non.

  • Des modifications mineures ont été apportées aux avertissements et aux 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 que vous avez soigneusement testé votre application si vous dépendez de intercepter des avertissements et des erreurs particuliers.

  • SQL Server Native Client a un contrôle d’erreur plus strict que MDAC, ce qui signifie que certaines applications qui ne sont pas conformes strictement aux spécifications ODBC et OLE DB peuvent se comporter différemment. Par exemple, le fournisseur SQLOLEDB n’a pas appliqué la règle que les noms de paramètres doivent commencer par « @ » pour les paramètres de résultat, mais le fournisseur OLE DB SQL Server Native Client.

  • 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 plutôt des événements de suivi Windows.

  • SQL Server Native Client ne peut pas être utilisé avec perfmon. Perfmon est un outil Windows qui ne peut être utilisé qu’avec des DSN qui utilisent le pilote SQLODBC MDAC 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é précédemment implémentée, 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 de schéma TABLES et TABLE_INFO, avec TABLE_TYPE défini sur SYNONYME.

  • Les valeurs de retour du type varchar(max)de données, , nvarchar(max), varbinary(max)xml, ou udtd’autres types d’objets volumineux ne peuvent pas être retournées aux versions clientes 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. Ils doivent être exécutés en mode de validation automatique.

    • Toutes les opérations de recherche en texte intégral (index et DDL catalogue)

    • Toutes les opérations de base de données (créer une base de données, modifier une base de données, supprimer une base de données)

    • Reconfigurer

    • Arrêt

    • Tuer

    • Backup (Sauvegarder)

  • 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 avec 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 signale la taille maximale des varchar(max) colonnes comme 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 la résolution en fonction de la position ou de la priorité) pour des raisons de compatibilité descendante. Les futures versions 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 pour éliminer toute dépendance à 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 avec 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 des procédures stockées et des lots, car SQL Server exige que les @@TRANCOUNT soient identiques une fois qu’un lot ou une procédure stockée a terminé l’exécution comme c’était le cas lorsque le lot ou la procédure stockée a démarré.

  • Avec SQL Server Native Client, ITransactionLocal ::BeginTransaction entraîne le démarrage immédiat d’une transaction. Avec MDAC, le démarrage de la transaction a été retardé jusqu’à ce que l’application exécute une instruction qui a requis une transaction en mode transaction implicite. Pour plus d’informations, consultez SET IMPLICIT_TRANSACTIONS (Transact-SQL).

  • Vous pouvez rencontrer des erreurs lors de l’utilisation du pilote SQL Server Native Client 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 DE SQL Server.) Pour résoudre ce problème, vous pouvez revenir à MDAC ou migrer vers System.Data.SqlClient.

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 seul SQL Server Native Client prend en charge l’isolation des transactions d’instantané. (En termes de programmation, l’isolation des transactions validées en lecture à l’aide du contrôle de version de ligne est identique à la transaction validée en lecture.).

Voir aussi

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