Présentation du Fournisseur Microsoft OLE DB pour SQL Server

Le fournisseur Microsoft OLE DB pour SQL Server, SQLOLEDB, permet à ADO d’accéder à Microsoft SQL Server.

Important

SQL Server Native Client (souvent abrégé en SNAC) a été supprimé dans SQL Server 2022 (16.x) et SQL Server Management Studio 19 (SSMS). Le fournisseur OLE DB pour SQL Server Native Client (SQLNCLI ou SQLNCLI11) et le fournisseur Microsoft OLE DB hérité pour SQL Server (SQLOLEDB) ne sont pas recommandés dans les nouveaux développements. Utilisez à la place le nouveau Microsoft OLE DB Driver (MSOLEDBSQL) pour SQL Server.

Paramètres de chaîne de connexion

Pour vous connecter à ce fournisseur, définissez l’argument Fournisseur sur la propriété ConnectionString sur :

SQLOLEDB

Cette valeur peut également être définie ou lue à l’aide de la propriété Provider.

Chaîne de connexion typique

Une chaîne de connexion classique pour ce fournisseur est la suivante :

"Provider=SQLOLEDB;Data Source=serverName;"
Initial Catalog=databaseName;
User ID=MyUserID;Password=MyPassword;"

La chaîne se compose des mots clés suivants :

Mot clé Description
Fournisseur Fournisseur Microsoft OLE DB pour SQL Server
Source ou récepteur de données Spécifie le nom d’un serveur.
Catalogue initial ou Base de données Spécifie le nom de la base de données sur le serveur.
ID utilisateur ou uid Spécifie le nom d'utilisateur (pour l'authentification SQL Server).
Mot de passe ou pwd Spécifie le mot de passe d'utilisateur (pour l'authentification SQL Server).

Remarque

Si vous vous connectez à un fournisseur de sources de données qui prend en charge l’authentification Windows, vous devez spécifier Trusted_Connection=yes ou Integrated Security = SSPI au lieu des informations d’ID utilisateur et de mot de passe dans la chaîne de connexion.

Chaîne de connexion spécifique au fournisseur.

Le fournisseur prend en charge plusieurs paramètres de connexion spécifiques au fournisseur en plus de ceux définis par ADO. Comme avec les propriétés de connexion ADO, ces propriétés spécifiques au fournisseur peuvent être définies via la collection Propriétés d’une connexion ou peuvent être définies dans le cadre de ConnectionString.

Paramètre Description
Trusted_Connection Indique le mode d’authentification utilisateur. Peut être défini sur Oui ou Non. La valeur par défaut est Non. Si cette propriété est définie sur Oui, SQLOLEDB utilise le mode d’authentification Microsoft Windows NT pour autoriser l’accès utilisateur à la base de données SQL Server spécifiée par les valeurs de propriété Location et Source de données. Si cette propriété est définie sur Non, SQLOLEDB utilise le mode mixte pour autoriser l’accès utilisateur à la base de données SQL Server. Les propriétés de connexion et de mot de passe SQL Server sont spécifiées dans les propriétés Id d’utilisateur et Mot de passe.
Current Language Indique un nom de langue SQL Server. Identifie la langue utilisée pour le choix et la mise en forme des messages système. La langue doit être installée sur le SQL Server, sinon l’ouverture de la connexion échoue.
Network Address Indique l’adresse réseau de l’SQL Server spécifiée par la propriété Location.
Network Library Indique le nom de la bibliothèque réseau (DLL) utilisée pour communiquer avec le SQL Server. Le nom ne doit pas inclure le chemin d'accès ni l'extension de nom de fichier .dll. La valeur par défaut est fournie par la configuration du client SQL Server.
Utiliser la procédure de préparation Détermine si SQL Server crée des procédures stockées temporaires lorsque les commandes sont préparées (par la propriété Prepare).
Traduire automatiquement Indique si les caractères OEM/ANSI sont convertis. Cette propriété peut être définie sur True ou False. La valeur par défaut est True. Si cette propriété est définie sur True, SQLOLEDB effectue une conversion de caractères OEM/ANSI lorsque des chaînes de caractères multioctets sont récupérées ou envoyées à l’SQL Server. Si cette propriété est définie sur False, SQLOLEDB n’effectue pas de conversion de caractères OEM/ANSI sur des données de chaîne de caractères multioctets.
Packet Size Indique la taille d'un paquet réseau en octets. La valeur de propriété relative à la taille du paquet doit être comprise entre 512 et 32767. La taille des paquets réseau SQLOLEDB par défaut est 4096.
Nom d’application Indique le nom de l'application cliente.
ID Station de travail Chaîne identifiant la station de travail.

Utilisation de l’objet Command

SQLOLEDB accepte un amalgame d’ODBC, ANSI et SQL Server-spécifique à Transact-SQL comme syntaxe valide. Par exemple, l'instruction SQL suivante utilise une séquence d'échappement ODBC SQL pour spécifier la fonction de chaîne LCASE :

SELECT customerid={fn LCASE(CustomerID)} FROM Customers

LCASE retourne une chaîne de caractères, en convertissant toutes les majuscules en leurs équivalents minuscules. La fonction de chaîne ANSI SQL LOWER effectue la même opération, si bien que l'instruction SQL suivante correspond à l'équivalent ANSI de l'instruction ODBC présentée ci-dessus :

SELECT customerid=LOWER(CustomerID) FROM Customers

SQLOLEDB traite correctement chaque forme de l’instruction quand elle est spécifiée en tant que texte pour une commande.

Procédures stockées

Quand vous exécutez une procédure stockée en utilisant une commande SQLOLEDB, utilisez la séquence d’appel de procédure d’échappement ODBC dans le texte de la commande. SQLOLEDB utilise alors le mécanisme d’appel de procédure distante de SQL Server pour optimiser le traitement des commandes. Par exemple, l’instruction ODBC SQL suivante est préférable à la forme Transact-SQL :

ODBC SQL

{call SalesByCategory('Produce', '1995')}

Transact-SQL

EXECUTE SalesByCategory 'Produce', '1995'

Fonctionnalités DE SQL Server

Avec SQL Server, ADO peut utiliser XML pour l’entrée de commande et récupérer les résultats au format de flux XML au lieu d’objets Recordset. Pour plus d’informations, consultez Utilisation de flux pour l’entrée de commande et la récupération des ensembles de résultats dans des flux.

Accès aux données sql_variant à l’aide de MDAC 2.7, MDAC 2.8 ou Windows DAC 6.0

Microsoft SQL Server a un type de données appelé sql_variant. Comme pour le DBTYPE_VARIANT d’OLE DB, le type de données sql_variant peut stocker des données de plusieurs types différents. Toutefois, il existe quelques différences clés entre DBTYPE_VARIANT et sql_variant. ADO gère également les données stockées en tant que valeur sql_variant différemment de la façon dont elles gèrent d’autres types de données. La liste suivante décrit les problèmes à prendre en compte lorsque vous accédez SQL Server données stockées dans des colonnes de type sql_variant.

  • Dans MDAC 2.7, MDAC 2.8 et Windows Data Access Components (Windows DAC) 6.0, le fournisseur OLE DB pour SQL Server prend en charge le type sql_variant. Le fournisseur OLE DB pour ODBC ne le fait pas.

  • Le type sql_variant ne correspond pas exactement au type de données DBTYPE_VARIANT . Le type sql_variant prend en charge quelques sous-types non pris en charge par DBTYPE_VARIANT, y compris les chaînes GUID, ANSI (non UNICODE) et BIGINT. L’utilisation de sous-types autres que ceux répertoriés précédemment fonctionne correctement.

  • Le sous-type NUMERICsql_variant ne correspond pas au DBTYPE_DECIMAL en taille.

  • Plusieurs contraintes de type de données entraînent des types qui ne correspondent pas. Par exemple, le coérage d’un sql_variant avec un sous-type de GUID vers un DBTYPE_VARIANT entraîne un sous-type de safearray(octets). La conversion de ce type en sql_variant entraîne un nouveau sous-type de tableau(octets).

  • Les champs recordset qui contiennent sql_variant données peuvent être distants (marshalés) ou conservés uniquement si le sql_variant contient des sous-types spécifiques. Les tentatives de données distantes ou persistantes avec les sous-types non pris en charge suivants entraînent une erreur d’exécution (conversion non prise en charge) à partir du fournisseur de persistance Microsoft (MSPersist) : VT_VARIANT, VT_RECORD, VT_ILLEGAL, VT_UNKNOWN, VT_BSTR et VT_DISPATCH.

  • Le fournisseur OLE DB pour SQL Server dans MDAC 2.7, MDAC 2.8 et Windows DAC 6.0 possède une propriété dynamique appelée Allow Native Variants, qui, comme le nom l’implique, permet aux développeurs d’accéder au sql_variant dans sa forme native par opposition à un DBTYPE_VARIANT. Si cette propriété est définie et qu’un jeu d’enregistrements est ouvert avec le moteur de curseur client (adUseClient), l’appel Recordset.Open échoue. Si cette propriété est définie et qu’un jeu d’enregistrements est ouvert avec des curseurs de serveur (adUseServer), l’appel Recordset.Open réussit, mais l’accès aux colonnes de type sql_variant génère une erreur.

  • Dans les applications clientes qui utilisent MDAC 2.5, sql_variant données peuvent être utilisées avec des requêtes sur Microsoft SQL Server. Toutefois, les valeurs des données sql_variant sont traitées comme des chaînes. Ces applications clientes doivent être mises à niveau vers MDAC 2.7, MDAC 2.8 ou Windows DAC 6.0.

Comportement de recordset

SQLOLEDB ne peut pas utiliser de curseurs SQL Server pour prendre en charge les résultats comprenant plusieurs ensembles de lignes générés par de nombreuses commandes. Lorsqu'un consommateur demande un recordset qui requiert la prise en charge de curseurs SQL Server, une erreur se produit si le texte de commande génère plusieurs ensembles de lignes comme résultat.

Les jeux d’enregistrements SQLOLEDB pouvant faire défiler sont pris en charge par SQL Server curseurs. SQL Server impose des limitations aux curseurs qui sont sensibles aux modifications effectuées par d'autres utilisateurs de la base de données. Plus précisément, les lignes de certains curseurs ne peuvent pas être ordonnées et la tentative de création d’un jeu d’enregistrements à l’aide d’une commande contenant une clause SQL ORDER BY peut échouer.

Propriétés dynamiques

Le fournisseur Microsoft OLE DB pour SQL Server insère plusieurs propriétés dynamiques dans la collection Properties des objets Connection, Recordset et Command non ouverts.

Les tableaux suivants sont des index croisés des noms ADO et OLE DB de chaque propriété dynamique. La Référence du programmeur OLE DB fait référence à un nom de propriété ADO par le terme « Description ». Vous trouverez de plus amples informations sur ces propriétés dans la référence du programmeur OLE DB. Recherchez le nom de la propriété OLE DB dans l’index ou consultez l’Annexe C : Propriétés OLE DB.

Propriétés dynamiques de connexion

Les propriétés suivantes sont ajoutées à la collection Properties de l’objet Connection.

Nom de la propriété ADO Nom de la propriété OLE DB
Sessions actives DBPROP_ACTIVESESSIONS
Asynchable Abort DBPROP_ASYNCTXNABORT
Asynchable Commit DBPROP_ASYNCTNXCOMMIT
Autocommit Isolation Levels DBPROP_SESS_AUTOCOMMITISOLEVELS
Catalog Location DBPROP_CATALOGLOCATION
Catalog Term DBPROP_CATALOGTERM
Définition de colonne DBPROP_COLUMNDEFINITION
Connect Timeout DBPROP_INIT_TIMEOUT
Current Catalog DBPROP_CURRENTCATALOG
source de données DBPROP_INIT_DATASOURCE
Nom de la source de données DBPROP_DATASOURCENAME
Data Source Object Threading Model DBPROP_DSOTHREADMODEL
DBMS Name DBPROP_DBMSNAME
DBMS Version DBPROP_DBMSVER
Extended Properties DBPROP_INIT_PROVIDERSTRING
GROUP BY Support DBPROP_GROUPBY
Heterogeneous Table Support DBPROP_HETEROGENEOUSTABLES
Identifier Case Sensitivity DBPROP_IDENTIFIERCASE
Catalogue initial DBPROP_INIT_CATALOG
Niveaux d’isolation DBPROP_SUPPORTEDTXNISOLEVELS
Isolation Retention DBPROP_SUPPORTEDTXNISORETAIN
Identificateur de paramètres régionaux DBPROP_INIT_LCID
Maximum Index Size DBPROP_MAXINDEXSIZE
Maximum Row Size DBPROP_MAXROWSIZE
Maximum Row Size Includes BLOB DBPROP_MAXROWSIZEINCLUDESBLOB
Maximum Tables in SELECT DBPROP_MAXTABLESINSELECT
Multiple Parameter Sets DBPROP_MULTIPLEPARAMSETS
Résultats multiples DBPROP_MULTIPLERESULTS
Multiple Storage Objects DBPROP_MULTIPLESTORAGEOBJECTS
Multi-Table Update DBPROP_MULTITABLEUPDATE
NULL Collation Order DBPROP_NULLCOLLATION
NULL Concatenation Behavior DBPROP_CONCATNULLBEHAVIOR
OLE DB Version DBPROP_PROVIDEROLEDBVER
OLE Object Support DBPROP_OLEOBJECTS
Open Rowset Support DBPROP_OPENROWSETSUPPORT
ORDER BY Columns in Select List DBPROP_ORDERBYCOLUMNSINSELECT
Output Parameter Availability DBPROP_OUTPUTPARAMETERAVAILABILITY
Pass By Ref Accessors DBPROP_BYREFACCESSORS
Mot de passe DBPROP_AUTH_PASSWORD
Persist Security Info DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO
Persistent ID Type DBPROP_PERSISTENTIDTYPE
Prepare Abort Behavior DBPROP_PREPAREABORTBEHAVIOR
Prepare Commit Behavior DBPROP_PREPARECOMMITBEHAVIOR
Procedure Term DBPROP_PROCEDURETERM
Prompt DBPROP_INIT_PROMPT
Provider Friendly Name DBPROP_PROVIDERFRIENDLYNAME
Nom du fournisseur DBPROP_PROVIDERFILENAME
Version du fournisseur DBPROP_PROVIDERVER
Read-Only Data Source DBPROP_DATASOURCEREADONLY
Rowset Conversions on Command DBPROP_ROWSETCONVERSIONSONCOMMAND
Schema Term DBPROP_SCHEMATERM
Schema Usage DBPROP_SCHEMAUSAGE
Prise en charge SQL DBPROP_SQLSUPPORT
Structured Storage DBPROP_STRUCTUREDSTORAGE
Subquery Support DBPROP_SUBQUERIES
Table Term DBPROP_TABLETERM
Transaction DDL DBPROP_SUPPORTEDTXNDDL
ID d'utilisateur DBPROP_AUTH_USERID
Nom d’utilisateur DBPROP_USERNAME
Handle de la fenêtre DBPROP_INIT_HWND

Propriétés dynamiques du recordset

Les propriétés suivantes sont ajoutées à la collection Properties de l’objet Recordset.

Nom de la propriété ADO Nom de la propriété OLE DB
Access Order DBPROP_ACCESSORDER
Blocking Storage Objects DBPROP_BLOCKINGSTORAGEOBJECTS
Bookmark Type DBPROP_BOOKMARKTYPE
Bookmarkable DBPROP_IROWSETLOCATE
Change Inserted Rows DBPROP_CHANGEINSERTEDROWS
Column Privileges DBPROP_COLUMNRESTRICT
Column Set Notification DBPROP_NOTIFYCOLUMNSET
Command Time Out DBPROP_COMMANDTIMEOUT
Defer Column DBPROP_DEFERRED
Delay Storage Object Updates DBPROP_DELAYSTORAGEOBJECTS
Fetch Backwards DBPROP_CANFETCHBACKWARDS
Hold Rows DBPROP_CANHOLDROWS
IAccessor DBPROP_IAccessor
IColumnsInfo DBPROP_IColumnsInfo
IColumnsRowset DBPROP_IColumnsRowset
IConnectionPointContainer DBPROP_IConnectionPointContainer
IConvertType DBPROP_IConvertType
Immobile Rows DBPROP_IMMOBILEROWS
IRowset DBPROP_IRowset
IRowsetChange DBPROP_IRowsetChange
IRowsetIdentity DBPROP_IRowsetIdentity
IRowsetInfo DBPROP_IRowsetInfo
IRowsetLocate DBPROP_IRowsestLocate
IRowsetResynch
IRowsetScroll DBPROP_IRowsetScroll
IRowsetUpdate DBPROP_IRowsetUpdate.
ISequentialStream DBPROP_ISequentialStream
ISupportErrorInfo DBPROP_ISupportErrorInfo
Literal Bookmarks DBPROP_LITERALBOOKMARKS
Literal Row Identity DBPROP_LITERALIDENTITY
Maximum Open Rows DBPROP_MAXOPENROWS
Maximum Pending Rows DBPROP_MAXPENDINGROWS
Maximum Rows DBPROP_MAXROWS
Notification Granularity DBPROP_NOTIFICATIONGRANULARITY
Notification Phases DBPROP_NOTIFICATIONPHASES
Objects Transacted DBPROP_TRANSACTEDOBJECT
Others' Changes Visible DBPROP_OTHERUPDATEDELETE
Others' Inserts Visible DBPROP_OTHERINSERT
Own Changes Visible DBPROP_OWNUPDATEDELETE
Own Inserts Visible DBPROP_OWNINSERT
Preserve on Abort DBPROP_ABORTPRESERVE
Preserve on Commit DBPROP_COMMITPRESERVE
Quick Restart DBPROP_QUICKRESTART
Reentrant Events DBPROP_REENTRANTEVENTS
Remove Deleted Rows DBPROP_REMOVEDELETED
Report Multiple Changes DBPROP_REPORTMULTIPLECHANGES
Return Pending Inserts DBPROP_RETURNPENDINGINSERTS
Row Delete Notification DBPROP_NOTIFYROWDELETE
Row First Change Notification DBPROP_NOTIFYROWFIRSTCHANGE
Row Insert Notification DBPROP_NOTIFYROWINSERT
Row Privileges DBPROP_ROWRESTRICT
Row Resynchronization Notification DBPROP_NOTIFYROWRESYNCH
Row Threading Model DBPROP_ROWTHREADMODEL
Row Undo Change Notification DBPROP_NOTIFYROWUNDOCHANGE
Row Undo Delete Notification DBPROP_NOTIFYROWUNDODELETE
Row Undo Insert Notification DBPROP_NOTIFYROWUNDOINSERT
Row Update Notification DBPROP_NOTIFYROWUPDATE
Rowset Fetch Position Change Notification /DBPROP_NOTIFYROWSETFETCHPOSISIONCHANGE
Rowset Release Notification DBPROP_NOTIFYROWSETRELEASE
Scroll Backwards DBPROP_CANSCROLLBACKWARDS
Server Cursor DBPROP_SERVERCURSOR
Skip Deleted Bookmarks DBPROP_BOOKMARKSKIPPED
Strong Row Identity DBPROP_STRONGITDENTITY
Unique Rows DBPROP_UNIQUEROWS
Updatability DBPROP_UPDATABILITY
Use Bookmarks DBPROP_BOOKMARKS

Propriétés dynamiques de la commande

Les propriétés suivantes sont ajoutées à la collection Properties de l’objet Command.

Nom de la propriété ADO Nom de la propriété OLE DB
Access Order DBPROP_ACCESSORDER
Chemin de base SSPROP_STREAM_BASEPATH
Blocking Storage Objects DBPROP_BLOCKINGSTORAGEOBJECTS
Bookmark Type DBPROP_BOOKMARKTYPE
Bookmarkable DBPROP_IROWSETLOCATE
Change Inserted Rows DBPROP_CHANGEINSERTEDROWS
Column Privileges DBPROP_COLUMNRESTRICT
Column Set Notification DBPROP_NOTIFYCOLUMNSET
Type de contenu SSPROP_STREAM_CONTENTTYPE
Extraction automatique du curseur SSPROP_CURSORAUTOFETCH
Defer Column DBPROP_DEFERRED
Préparation différée SSPROP_DEFERPREPARE
Delay Storage Object Updates DBPROP_DELAYSTORAGEOBJECTS
Fetch Backwards DBPROP_CANFETCHBACKWARDS
Hold Rows DBPROP_CANHOLDROWS
IAccessor DBPROP_IAccessor
IColumnsInfo DBPROP_IColumnsInfo
IColumnsRowset DBPROP_IColumnsRowset
IConnectionPointContainer DBPROP_IConnectionPointContainer
IConvertType DBPROP_IConvertType
Immobile Rows DBPROP_IMMOBILEROWS
IRowset DBPROP_IRowset
IRowsetChange DBPROP_IRowsetChange
IRowsetIdentity DBPROP_IRowsetIdentity
IRowsetInfo DBPROP_IRowsetInfo
IRowsetLocate DBPROP_IRowsetLocate
IRowsetResynch DBPROP_IRowsetResynch
IRowsetScroll DBPROP_IRowsetScroll
IRowsetUpdate DBPROP_IRowsetUpdate.
ISequentialStream DBPROP_ISequentialStream
ISupportErrorInfo DBPROP_ISupportErrorInfo
Literal Bookmarks DBPROP_LITERALBOOKMARKS
Literal Row Identity DBPROP_LITERALIDENTITY
Mode de verrouillage DBPROP_LOCKMODE
Maximum Open Rows DBPROP_MAXOPENROWS
Maximum Pending Rows DBPROP_MAXPENDINGROWS
Maximum Rows DBPROP_MAXROWS
Notification Granularity DBPROP_NOTIFICATIONGRANULARITY
Notification Phases DBPROP_NOTIFICATIONPHASES
Objects Transacted DBPROP_TRANSACTEDOBJECT
Others' Changes Visible DBPROP_OTHERUPDATEDELETE
Others' Inserts Visible DBPROP_OTHERINSERT
Propriété d’encodage de la sortie DBPROP_OUTPUTENCODING
Propriété du flux de sortie DBPROP_OUTPUTSTREAM
Own Changes Visible DBPROP_OWNUPDATEDELETE
Own Inserts Visible DBPROP_OWNINSERT
Preserve on Abort DBPROP_ABORTPRESERVE
Preserve on Commit DBPROP_COMMITPRESERVE
Quick Restart DBPROP_QUICKRESTART
Reentrant Events DBPROP_REENTRANTEVENTS
Remove Deleted Rows DBPROP_REMOVEDELETED
Report Multiple Changes DBPROP_REPORTMULTIPLECHANGES
Return Pending Inserts DBPROP_RETURNPENDINGINSERTS
Row Delete Notification DBPROP_NOTIFYROWDELETE
Row First Change Notification DBPROP_NOTIFYROWFIRSTCHANGE
Row Insert Notification DBPROP_NOTIFYROWINSERT
Row Privileges DBPROP_ROWRESTRICT
Row Resynchronization Notification DBPROP_NOTIFYROWRESYNCH
Row Threading Model DBPROP_ROWTHREADMODEL
Row Undo Change Notification DBPROP_NOTIFYROWUNDOCHANGE
Row Undo Delete Notification DBPROP_NOTIFYROWUNDODELETE
Row Undo Insert Notification DBPROP_NOTIFYROWUNDOINSERT
Row Update Notification DBPROP_NOTIFYROWUPDATE
Rowset Fetch Position Change Notification DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE
Rowset Release Notification DBPROP_NOTIFYROWSETRELEASE
Scroll Backwards DBPROP_CANSCROLLBACKWARDS
Server Cursor DBPROP_SERVERCURSOR
Données du serveur lors de l’insertion DBPROP_SERVERDATAONINSERT
Skip Deleted Bookmarks DBPROP_BOOKMARKSKIP
Strong Row Identity DBPROP_STRONGIDENTITY
Updatability DBPROP_UPDATABILITY
Use Bookmarks DBPROP_BOOKMARKS
XML Root SSPROP_STREAM_XMLROOT
XSL SSPROP_STREAM_XSL

Pour plus d’informations sur l’implémentation spécifique et les informations fonctionnelles sur le fournisseur Microsoft SQL Server OLE DB, consultez le fournisseur SQL Server.

Voir aussi

ConnectionString, propriété (ADO)Provider, propriété (ADO)Recordset, objet (ADO)