What is a database connection provider

Microsoft OLE DB Provider for SQL Server Overview

The Microsoft OLE DB Provider for SQL Server, SQLOLEDB, allows ADO to access Microsoft SQL Server.

Important

The Microsoft OLE DB Provider for SQL Server (SQLOLEDB) remains deprecated and it is not recommended to use it for new development work. Instead, use the new Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL) which will be updated with the most recent server features.

Connection String Parameters

To connect to this provider, set the Provider argument to the ConnectionString property to:

This value can also be set or read using the Provider property.

Typical Connection String

A typical connection string for this provider is:

The string consists of these keywords:

KeywordDescription
ProviderSpecifies the OLE DB Provider for SQL Server.
Data Source or ServerSpecifies the name of a server.
Initial Catalog or DatabaseSpecifies the name of a database on the server.
User ID or uidSpecifies the user name (for SQL Server Authentication).
Password or pwdSpecifies the user password (for SQL Server Authentication).

Note

If you are connecting to a data source provider that supports Windows authentication, you should specify Trusted_Connection=yes or Integrated Security = SSPI instead of user ID and password information in the connection string.

Provider-Specific Connection Parameters

The provider supports several provider-specific connection parameters in addition to those defined by ADO. As with the ADO connection properties, these provider-specific properties can be set via the Properties collection of a Connection or can be set as part of the ConnectionString.

ParameterDescription
Trusted_ConnectionIndicates the user authentication mode. This can be set to Yes or No. The default value is No. If this property is set to Yes, SQLOLEDB uses Microsoft Windows NT Authentication Mode to authorize user access to the SQL Server database specified by the Location and Datasource property values. If this property is set to No, SQLOLEDB uses Mixed Mode to authorize user access to the SQL Server database. The SQL Server login and password are specified in the User Id and Password properties.
Current LanguageIndicates a SQL Server language name. Identifies the language used for system message selection and formatting. The language must be installed on the SQL Server, otherwise opening the connection will fail.
Network AddressIndicates the network address of the SQL Server specified by the Location property.
Network LibraryIndicates the name of the network library (DLL) used to communicate with the SQL Server. The name should not include the path or the .dll file name extension. The default is provided by the SQL Server client configuration.
Use Procedure for PrepareDetermines whether SQL Server creates temporary stored procedures when Commands are prepared (by the Prepared property).
Auto TranslateIndicates whether OEM/ANSI characters are converted. This property can be set to True or False. The default value is True. If this property is set to True, SQLOLEDB performs OEM/ANSI character conversion when multi-byte character strings are retrieved from, or sent to, the SQL Server. If this property is set to False, SQLOLEDB does not perform OEM/ANSI character conversion on multi-byte character string data.
Packet SizeIndicates a network packet size in bytes. The packet size property value must be between 512 and 32767. The default SQLOLEDB network packet size is 4096.
Application NameIndicates the client application name.
Workstation IDA string identifying the workstation.

Command Object Usage

SQLOLEDB accepts an amalgam of ODBC, ANSI, and SQL Server-specific Transact-SQL as valid syntax. For example, the following SQL statement uses an ODBC SQL escape sequence to specify the LCASE string function:

LCASE returns a character string, converting all uppercase characters to their lowercase equivalents. The ANSI SQL string function LOWER performs the same operation, so the following SQL statement is an ANSI equivalent to the ODBC statement presented earlier:

SQLOLEDB successfully processes either form of the statement when specified as text for a command.

Stored Procedures

When executing a SQL Server stored procedure using a SQLOLEDB command, use the ODBC procedure call escape sequence in the command text. SQLOLEDB then uses the remote procedure call mechanism of SQL Server to optimize command processing. For example, the following ODBC SQL statement is the preferred command text over the Transact-SQL form:

ODBC SQL

Transact-SQL

SQL Server Features

With SQL Server, ADO can use XML for Command input and retrieve results in XML stream format instead of in Recordset objects. For more information, see Using Streams for Command Input and Retrieving Resultsets Into Streams.

Accessing sql_variant data using MDAC 2.7, MDAC 2.8, or Windows DAC 6.0

Microsoft SQL Server has a data type called sql_variant. Similar to OLE DB's DBTYPE_VARIANT, the sql_variant data type can store data of several different types. However, there are a few key differences between DBTYPE_VARIANT and sql_variant. ADO also handles data stored as a sql_variant value differently than how it handles other data types. The following list describes issues to consider when you access SQL Server data stored in columns of type sql_variant.

  • In MDAC 2.7, MDAC 2.8, and Windows Data Access Components (Windows DAC) 6.0, the OLE DB Provider for SQL Server supports the sql_variant type. The OLE DB Provider for ODBC does not.

  • The sql_variant type does not exactly match the DBTYPE_VARIANT data type. The sql_variant type supports a few new subtypes not supported by DBTYPE_VARIANT, including GUID, ANSI (non-UNICODE) strings, and BIGINT. Using subtypes other than those listed earlier will work correctly.

  • The sql_variant subtype NUMERIC does not match the DBTYPE_DECIMAL in size.

  • Multiple data type coercions will result in types that do not match. For example, coercing a sql_variant with a subtype of GUID to a DBTYPE_VARIANT will result in a subtype of safearray(bytes). Converting this type back to a sql_variant will result in a new subtype of array(bytes).

  • Recordset fields that contain sql_variant data can be remoted (marshaled) or persisted only if the sql_variant contains specific subtypes. Attempting to remote or persist data with the following unsupported subtypes will cause a run-time error (unsupported conversion) from the Microsoft Persistence Provider (MSPersist): VT_VARIANT, VT_RECORD, VT_ILLEGAL, VT_UNKNOWN, VT_BSTR, and VT_DISPATCH.

  • The OLE DB Provider for SQL Server in MDAC 2.7, MDAC 2.8, and Windows DAC 6.0 has a dynamic property called Allow Native Variants which, as the name implies, allows developers to access the sql_variant in its native form as opposed to a DBTYPE_VARIANT. If this property is set, and a Recordset is opened with the Client Cursor Engine (adUseClient), the Recordset.Open call will fail. If this property is set and a Recordset is opened with server cursors (adUseServer), the Recordset.Open call will succeed, but accessing columns of type sql_variant will produce an error.

  • In client applications that use MDAC 2.5, sql_variant data can be used with queries against Microsoft SQL Server. However, the values of the sql_variant data are treated as strings. Such client applications should be upgraded to MDAC 2.7, MDAC 2.8, or Windows DAC 6.0.

Recordset Behavior

SQLOLEDB cannot use SQL Server cursors to support the multiple-result generated by many commands. If a consumer requests a recordset requiring SQL Server cursor support, an error occurs if the command text used generates more than a single recordset as its result.

Scrollable SQLOLEDB recordsets are supported by SQL Server cursors. SQL Server imposes limitations on cursors that are sensitive to changes made by other users of the database. Specifically, the rows in some cursors cannot be ordered, and attempting to create a recordset using a command containing an SQL ORDER BY clause can fail.

Dynamic Properties

The Microsoft OLE DB Provider for SQL Server inserts several dynamic properties into the Properties collection of the unopened Connection, Recordset, and Command objects.

The following tables are a cross-index of the ADO and OLE DB names for each dynamic property. The OLE DB Programmer's Reference refers to an ADO property name by the term "Description." You can find more information about these properties in the OLE DB Programmer's Reference. Search for the OLE DB property name in the Index or see Appendix C: OLE DB Properties.

Connection Dynamic Properties

The following properties are added to the Properties collection of the Connection object.

ADO Property NameOLE DB Property Name
Active SessionsDBPROP_ACTIVESESSIONS
Asynchable AbortDBPROP_ASYNCTXNABORT
Asynchable CommitDBPROP_ASYNCTNXCOMMIT
Autocommit Isolation LevelsDBPROP_SESS_AUTOCOMMITISOLEVELS
Catalog LocationDBPROP_CATALOGLOCATION
Catalog TermDBPROP_CATALOGTERM
Column DefinitionDBPROP_COLUMNDEFINITION
Connect TimeoutDBPROP_INIT_TIMEOUT
Current CatalogDBPROP_CURRENTCATALOG
Data SourceDBPROP_INIT_DATASOURCE
Data Source NameDBPROP_DATASOURCENAME
Data Source Object Threading ModelDBPROP_DSOTHREADMODEL
DBMS NameDBPROP_DBMSNAME
DBMS VersionDBPROP_DBMSVER
Extended PropertiesDBPROP_INIT_PROVIDERSTRING
GROUP BY SupportDBPROP_GROUPBY
Heterogeneous Table SupportDBPROP_HETEROGENEOUSTABLES
Identifier Case SensitivityDBPROP_IDENTIFIERCASE
Initial CatalogDBPROP_INIT_CATALOG
Isolation LevelsDBPROP_SUPPORTEDTXNISOLEVELS
Isolation RetentionDBPROP_SUPPORTEDTXNISORETAIN
Locale IdentifierDBPROP_INIT_LCID
Maximum Index SizeDBPROP_MAXINDEXSIZE
Maximum Row SizeDBPROP_MAXROWSIZE
Maximum Row Size Includes BLOBDBPROP_MAXROWSIZEINCLUDESBLOB
Maximum Tables in SELECTDBPROP_MAXTABLESINSELECT
Multiple Parameter SetsDBPROP_MULTIPLEPARAMSETS
Multiple ResultsDBPROP_MULTIPLERESULTS
Multiple Storage ObjectsDBPROP_MULTIPLESTORAGEOBJECTS
Multi-Table UpdateDBPROP_MULTITABLEUPDATE
NULL Collation OrderDBPROP_NULLCOLLATION
NULL Concatenation BehaviorDBPROP_CONCATNULLBEHAVIOR
OLE DB VersionDBPROP_PROVIDEROLEDBVER
OLE Object SupportDBPROP_OLEOBJECTS
Open Rowset SupportDBPROP_OPENROWSETSUPPORT
ORDER BY Columns in Select ListDBPROP_ORDERBYCOLUMNSINSELECT
Output Parameter AvailabilityDBPROP_OUTPUTPARAMETERAVAILABILITY
Pass By Ref AccessorsDBPROP_BYREFACCESSORS
PasswordDBPROP_AUTH_PASSWORD
Persist Security InfoDBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO
Persistent ID TypeDBPROP_PERSISTENTIDTYPE
Prepare Abort BehaviorDBPROP_PREPAREABORTBEHAVIOR
Prepare Commit BehaviorDBPROP_PREPARECOMMITBEHAVIOR
Procedure TermDBPROP_PROCEDURETERM
PromptDBPROP_INIT_PROMPT
Provider Friendly NameDBPROP_PROVIDERFRIENDLYNAME
Provider NameDBPROP_PROVIDERFILENAME
Provider VersionDBPROP_PROVIDERVER
Read-Only Data SourceDBPROP_DATASOURCEREADONLY
Rowset Conversions on CommandDBPROP_ROWSETCONVERSIONSONCOMMAND
Schema TermDBPROP_SCHEMATERM
Schema UsageDBPROP_SCHEMAUSAGE
SQL SupportDBPROP_SQLSUPPORT
Structured StorageDBPROP_STRUCTUREDSTORAGE
Subquery SupportDBPROP_SUBQUERIES
Table TermDBPROP_TABLETERM
Transaction DDLDBPROP_SUPPORTEDTXNDDL
User IDDBPROP_AUTH_USERID
User NameDBPROP_USERNAME
Window HandleDBPROP_INIT_HWND

Recordset Dynamic Properties

The following properties are added to the Properties collection of the Recordset object.

ADO Property NameOLE DB Property Name
Access OrderDBPROP_ACCESSORDER
Blocking Storage ObjectsDBPROP_BLOCKINGSTORAGEOBJECTS
Bookmark TypeDBPROP_BOOKMARKTYPE
BookmarkableDBPROP_IROWSETLOCATE
Change Inserted RowsDBPROP_CHANGEINSERTEDROWS
Column PrivilegesDBPROP_COLUMNRESTRICT
Column Set NotificationDBPROP_NOTIFYCOLUMNSET
Command Time OutDBPROP_COMMANDTIMEOUT
Defer ColumnDBPROP_DEFERRED
Delay Storage Object UpdatesDBPROP_DELAYSTORAGEOBJECTS
Fetch BackwardsDBPROP_CANFETCHBACKWARDS
Hold RowsDBPROP_CANHOLDROWS
IAccessorDBPROP_IAccessor
IColumnsInfoDBPROP_IColumnsInfo
IColumnsRowsetDBPROP_IColumnsRowset
IConnectionPointContainerDBPROP_IConnectionPointContainer
IConvertTypeDBPROP_IConvertType
Immobile RowsDBPROP_IMMOBILEROWS
IRowsetDBPROP_IRowset
IRowsetChangeDBPROP_IRowsetChange
IRowsetIdentityDBPROP_IRowsetIdentity
IRowsetInfoDBPROP_IRowsetInfo
IRowsetLocateDBPROP_IRowsestLocate
IRowsetResynch
IRowsetScrollDBPROP_IRowsetScroll
IRowsetUpdateDBPROP_IRowsetUpdate
ISequentialStreamDBPROP_ISequentialStream
ISupportErrorInfoDBPROP_ISupportErrorInfo
Literal BookmarksDBPROP_LITERALBOOKMARKS
Literal Row IdentityDBPROP_LITERALIDENTITY
Maximum Open RowsDBPROP_MAXOPENROWS
Maximum Pending RowsDBPROP_MAXPENDINGROWS
Maximum RowsDBPROP_MAXROWS
Notification GranularityDBPROP_NOTIFICATIONGRANULARITY
Notification PhasesDBPROP_NOTIFICATIONPHASES
Objects TransactedDBPROP_TRANSACTEDOBJECT
Others' Changes VisibleDBPROP_OTHERUPDATEDELETE
Others' Inserts VisibleDBPROP_OTHERINSERT
Own Changes VisibleDBPROP_OWNUPDATEDELETE
Own Inserts VisibleDBPROP_OWNINSERT
Preserve on AbortDBPROP_ABORTPRESERVE
Preserve on CommitDBPROP_COMMITPRESERVE
Quick RestartDBPROP_QUICKRESTART
Reentrant EventsDBPROP_REENTRANTEVENTS
Remove Deleted RowsDBPROP_REMOVEDELETED
Report Multiple ChangesDBPROP_REPORTMULTIPLECHANGES
Return Pending InsertsDBPROP_RETURNPENDINGINSERTS
Row Delete NotificationDBPROP_NOTIFYROWDELETE
Row First Change NotificationDBPROP_NOTIFYROWFIRSTCHANGE
Row Insert NotificationDBPROP_NOTIFYROWINSERT
Row PrivilegesDBPROP_ROWRESTRICT
Row Resynchronization NotificationDBPROP_NOTIFYROWRESYNCH
Row Threading ModelDBPROP_ROWTHREADMODEL
Row Undo Change NotificationDBPROP_NOTIFYROWUNDOCHANGE
Row Undo Delete NotificationDBPROP_NOTIFYROWUNDODELETE
Row Undo Insert NotificationDBPROP_NOTIFYROWUNDOINSERT
Row Update NotificationDBPROP_NOTIFYROWUPDATE
Rowset Fetch Position Change NotificationDBPROP_NOTIFYROWSETFETCHPOSISIONCHANGE
Rowset Release NotificationDBPROP_NOTIFYROWSETRELEASE
Scroll BackwardsDBPROP_CANSCROLLBACKWARDS
Server CursorDBPROP_SERVERCURSOR
Skip Deleted BookmarksDBPROP_BOOKMARKSKIPPED
Strong Row IdentityDBPROP_STRONGITDENTITY
Unique RowsDBPROP_UNIQUEROWS
UpdatabilityDBPROP_UPDATABILITY
Use BookmarksDBPROP_BOOKMARKS

Command Dynamic Properties

The following properties are added to the Properties collection of the Command object.

ADO Property NameOLE DB Property Name
Access OrderDBPROP_ACCESSORDER
Base PathSSPROP_STREAM_BASEPATH
Blocking Storage ObjectsDBPROP_BLOCKINGSTORAGEOBJECTS
Bookmark TypeDBPROP_BOOKMARKTYPE
BookmarkableDBPROP_IROWSETLOCATE
Change Inserted RowsDBPROP_CHANGEINSERTEDROWS
Column PrivilegesDBPROP_COLUMNRESTRICT
Column Set NotificationDBPROP_NOTIFYCOLUMNSET
Content TypeSSPROP_STREAM_CONTENTTYPE
Cursor Auto FetchSSPROP_CURSORAUTOFETCH
Defer ColumnDBPROP_DEFERRED
Defer PrepareSSPROP_DEFERPREPARE
Delay Storage Object UpdatesDBPROP_DELAYSTORAGEOBJECTS
Fetch BackwardsDBPROP_CANFETCHBACKWARDS
Hold RowsDBPROP_CANHOLDROWS
IAccessorDBPROP_IAccessor
IColumnsInfoDBPROP_IColumnsInfo
IColumnsRowsetDBPROP_IColumnsRowset
IConnectionPointContainerDBPROP_IConnectionPointContainer
IConvertTypeDBPROP_IConvertType
Immobile RowsDBPROP_IMMOBILEROWS
IRowsetDBPROP_IRowset
IRowsetChangeDBPROP_IRowsetChange
IRowsetIdentityDBPROP_IRowsetIdentity
IRowsetInfoDBPROP_IRowsetInfo
IRowsetLocateDBPROP_IRowsetLocate
IRowsetResynchDBPROP_IRowsetResynch
IRowsetScrollDBPROP_IRowsetScroll
IRowsetUpdateDBPROP_IRowsetUpdate
ISequentialStreamDBPROP_ISequentialStream
ISupportErrorInfoDBPROP_ISupportErrorInfo
Literal BookmarksDBPROP_LITERALBOOKMARKS
Literal Row IdentityDBPROP_LITERALIDENTITY
Lock ModeDBPROP_LOCKMODE
Maximum Open RowsDBPROP_MAXOPENROWS
Maximum Pending RowsDBPROP_MAXPENDINGROWS
Maximum RowsDBPROP_MAXROWS
Notification GranularityDBPROP_NOTIFICATIONGRANULARITY
Notification PhasesDBPROP_NOTIFICATIONPHASES
Objects TransactedDBPROP_TRANSACTEDOBJECT
Others' Changes VisibleDBPROP_OTHERUPDATEDELETE
Others' Inserts VisibleDBPROP_OTHERINSERT
Output Encoding PropertyDBPROP_OUTPUTENCODING
Output Stream PropertyDBPROP_OUTPUTSTREAM
Own Changes VisibleDBPROP_OWNUPDATEDELETE
Own Inserts VisibleDBPROP_OWNINSERT
Preserve on AbortDBPROP_ABORTPRESERVE
Preserve on CommitDBPROP_COMMITPRESERVE
Quick RestartDBPROP_QUICKRESTART
Reentrant EventsDBPROP_REENTRANTEVENTS
Remove Deleted RowsDBPROP_REMOVEDELETED
Report Multiple ChangesDBPROP_REPORTMULTIPLECHANGES
Return Pending InsertsDBPROP_RETURNPENDINGINSERTS
Row Delete NotificationDBPROP_NOTIFYROWDELETE
Row First Change NotificationDBPROP_NOTIFYROWFIRSTCHANGE
Row Insert NotificationDBPROP_NOTIFYROWINSERT
Row PrivilegesDBPROP_ROWRESTRICT
Row Resynchronization NotificationDBPROP_NOTIFYROWRESYNCH
Row Threading ModelDBPROP_ROWTHREADMODEL
Row Undo Change NotificationDBPROP_NOTIFYROWUNDOCHANGE
Row Undo Delete NotificationDBPROP_NOTIFYROWUNDODELETE
Row Undo Insert NotificationDBPROP_NOTIFYROWUNDOINSERT
Row Update NotificationDBPROP_NOTIFYROWUPDATE
Rowset Fetch Position Change NotificationDBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE
Rowset Release NotificationDBPROP_NOTIFYROWSETRELEASE
Scroll BackwardsDBPROP_CANSCROLLBACKWARDS
Server CursorDBPROP_SERVERCURSOR
Server Data on InsertDBPROP_SERVERDATAONINSERT
Skip Deleted BookmarksDBPROP_BOOKMARKSKIP
Strong Row IdentityDBPROP_STRONGIDENTITY
UpdatabilityDBPROP_UPDATABILITY
Use BookmarksDBPROP_BOOKMARKS
XML RootSSPROP_STREAM_XMLROOT
XSLSSPROP_STREAM_XSL

For specific implementation details and functional information about the Microsoft SQL Server OLE DB Provider, see the SQL Server Provider.

See Also

ConnectionString Property (ADO)Provider Property (ADO)Recordset Object (ADO)