Access
 sql >> Base de données >  >> RDS >> Access

Démêler les nouveaux pilotes ODBC et OLEDB de Microsoft SQL Server

Démêler les nouveaux pilotes ODBC et OLEDB de Microsoft SQL Server

Certains d'entre vous savent peut-être déjà que Microsoft est revenu sur sa dépréciation prévue d'OLEDB et a fourni un nouveau pilote OLEDB. Cependant, il peut être difficile de déterminer ce que vous devriez utiliser. Lorsque nous utilisions SQL Server Native Client, c'était assez simple - le client natif avait à la fois OLEDB et ODBC livrés dans un seul fichier DLL, ce qui facilitait l'installation. Il suffisait de vérifier que vous utilisiez la bonne version de Native Client.

Avec SQL Server désormais disponible sur Linux, il n'est plus logique de distribuer Native Client, car Linux en général ne prend pas en charge OLEDB, qui est principalement une technologie Windows uniquement utilisée principalement par les produits Microsoft. Pour cette raison, Microsoft n'a pas choisi de combiner à la fois ODBC et OLEDB en une seule DLL. Si votre application contient du code VBA qui utilise à la fois DAO et ADO, vous devrez en installer deux différents fournisseurs pour obtenir les dernières fonctionnalités et prises en charge pour ODBC et OLEDB respectivement.

La convention de dénomination peut être un peu déroutante, car de nombreuses personnes se réfèrent vaguement à divers pilotes comme simplement "pilote ODBC" ou "fournisseur OLEDB". Alors mettons les noms au clair. Nous commencerons par identifier les versions obsolètes, puis examinerons les versions actuelles.

Versions obsolètes

Par défaut, toutes les versions de Windows sont livrées avec deux bibliothèques clientes d'accès aux données SQL Server préinstallées :

Fournisseur Microsoft OLE DB pour SQL Server (également appelé SQLOLEDB)
Pilote ODBC Microsoft SQL Server (également appelé SQLODBC)

C'est très important de noter que ceux-ci sont OBSOLÈTES . Ceux-ci ciblent SQL Server 2000 et manquent de nouvelles fonctionnalités introduites depuis. Windows ne le fera pas expédiez de nouveaux pilotes ou mettez-les à jour via sa mise à jour Windows. À l'avenir, vous, le développeur de l'application, devez fournir les pilotes de la version appropriée à utiliser avec votre application, plutôt que de vous fier à ceux fournis par Windows. Ne PAS utilisez-les dans votre développement actuel.

Versions actuelles

Avec cela à l'écart, regardons le bon pilote ODBC et le fournisseur OLEDB que nous voudrons peut-être utiliser.

Pilote ODBC 17 pour SQL Server

Au moment de la rédaction, le pilote ODBC 17 pour SQL Server est le dernier pilote et peut être téléchargé dans le lien fourni. La chaîne de connexion ressemble à ceci :

ODBC;DRIVER=ODBC Driver 17 for SQL Server;SERVER=myServer;DATABASE=myDatabase;

Pilote OLE DB 18 pour SQL Server

Au moment de la rédaction, le pilote OLEDB 18 est le pilote le plus récent. Même si la version est supérieure, l'ensemble de fonctionnalités est équivalent au pilote ODBC 17 pour SQL Server. La chaîne de connexion ressemble à ceci :

Provider=MSOLEDBSQL;Server=myServer; Database=myDataBase;

32 bits ou 64 bits ?

Une question courante qui se pose est de savoir si l'on doit installer les versions 64 bits ou 32 bits du pilote. La réponse est la même quelles que soient les versions dont nous parlons et cela dépend toujours du système d'exploitation, pas de l'Office. Par conséquent, si vous exécutez Access 32 bits sur Windows 64 bits, vous souhaiterez installer des pilotes 64 bits. Cela inclura les composants 32 bits nécessaires à l'exécution de l'accès 32 bits.

Puis-je utiliser SQL Server Native Client ?

Officiellement, SQL Server Native Client est pris en charge jusqu'à SQL Server 2012. Cependant, vous pouvez toujours l'utiliser pour vous connecter aux nouvelles versions de SQL Server. Plusieurs fonctionnalités manquent dans le client natif. Au fil du temps, ils deviendront de plus en plus inadaptés à vos besoins, en particulier avec la technologie Azure. Bien que vous puissiez continuer à l'utiliser pour vos applications existantes, nous vous encourageons à planifier de nouveaux développements à l'aide des pilotes ODBC et OLEDB distincts et à migrer vos applications existantes lorsque cela est possible. Vous devez migrer lorsqu'il est nécessaire d'utiliser de nouvelles technologies qui ne sont prises en charge que par ces nouveaux pilotes (par exemple, l'authentification Azure ou la fonctionnalité Always Encrypted).

Ai-je besoin des deux ?

Uniquement si vous utilisez à la fois DAO et ADO. De manière générale, tous les formulaires, rapports et requêtes Access utilisent toujours DAO. La seule fois où vous pourriez utiliser ADO est dans le code VBA. Donc, si vous n'utilisez pas ADO, vous pouvez vous contenter du pilote ODBC et cela devrait suffire à votre besoin. Cela signifie que lorsque vous liez normalement vos tables, vous utiliseriez un code similaire au suivant :

Dim db As DAO.Database
Dim tdf As DAO.TableDef

Set db =CurrentDb
Set tdf =db.CreateTableDef

tdf.Name =“MyRemoteTable”
tdf.SourceTableName =“dbo.MyRemoteTable”
tdf.Connect =“ODBC;DRIVER=ODBC Driver 17 for SQL Server;SERVER=myServer;DATABASE=myDatabase;”

db.TableDefs.Append

La syntaxe utilisée pour tdf.Connect fonctionne pour le querydef pass-through ou même pour la propriété Connect de la méthode DAO.Workspace.OpenDatabase.

Il est légal d'ouvrir des connexions ADO à l'aide d'ODBC, mais l'inconvénient est que vous finissez par parcourir plus de couches car vous utiliseriez le fournisseur OLEDB pour ODBC pour vous connecter au pilote ODBC 17 pour SQL Server. Si vous préférez quand même utiliser ODBC, vous pouvez utiliser le code suivant pour utiliser ODBC sur OLEDB :

Dim con As ADODB.Connection

Set con =New ADODB.Connection
con.ConnectionString ="DRIVER=ODBC Driver 17 for SQL Server;SERVER=myServer;DATABASE=myDatabase;"
con.Open

Il vaut mieux éviter la couche supplémentaire et utiliser directement l'OLEDB. Vous pouvez utiliser ce code pour obtenir les meilleures performances avec votre code ADO :

Dim con As ADODB.Connection

Set con =New ADODB.Connection
con.ConnectionString =“Provider=MSOLEDBSQL;Server=myServer; Database=myDataBase ; "
con.Open

Ainsi, la seule fois où vous aurez réellement besoin et utiliserez le nouveau pilote OLEDB pour SQL Server, c'est lorsque vous avez du code ADO dans votre application et que vous souhaitez utiliser toutes les fonctionnalités d'ADO, qui doivent être activées par le pilote OLEDB sous-jacent. /P>

Référence supplémentaire

Feuille de route pour la technologie d'accès aux données Microsoft