次の方法で共有


Microsoft OLE DB Provider for SQL Server の概要

Microsoft OLE DB Provider for SQL Server (SQLOLEDB) を使用すると、ADO から Microsoft SQL Server にアクセスできます。

大事な

SQL Server Native Client (多くの場合、省略された SNAC) は、SQL Server 2022 (16.x) および SQL Server Management Studio 19 (SSMS) から削除されました。 新しい開発では、SQL Server Native Client OLE DB プロバイダー (SQLNCLI または SQLNCLI11) と従来の Microsoft OLE DB Provider for SQL Server (SQLOLEDB) の両方は推奨されません。 今後、新しい Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server に切り替えます。

接続文字列パラメーター

このプロバイダーに接続するには、Provider 引数を ConnectionString プロパティに設定します。

SQLOLEDB

この値は、Provider プロパティを使用して設定または読み取ることもできます。

一般的な接続文字列

このプロバイダーの一般的な接続文字列は次のとおりです。

"Provider=SQLOLEDB;Data Source=serverName;"
Initial Catalog=databaseName;
User ID=MyUserID;Password=<password>;"

文字列は、次のキーワードで構成されます。

キーワード 説明
プロバイダー OLE DB Provider for SQL Server を指定します。
データ ソース または サーバー サーバーの名前を指定します。
初期カタログ または Database サーバー上のデータベースの名前を指定します。
ユーザーID または uid ユーザー名を指定します (SQL Server 認証の場合)。
パスワード または pwd ユーザー パスワードを指定します (SQL Server 認証の場合)。

手記

Windows 認証をサポートするデータ ソース プロバイダーに接続する場合は、接続文字列のユーザー ID とパスワード情報の代わりに、Trusted_Connection=yes または Integrated Security = SSPI を指定する必要があります。

Provider-Specific 接続パラメーター

プロバイダーは、ADO で定義されているものに加えて、いくつかのプロバイダー固有の接続パラメーターをサポートしています。 ADO 接続プロパティと同様に、これらのプロバイダー固有のプロパティは、ConnectionProperties コレクションを使用して設定することも、ConnectionStringの一部として設定することもできます。

パラメーター 説明
信頼できる接続 ユーザー認証モードを示します。 これは [はい] または [いいえ]に設定できます。 既定値は なし です。 このプロパティが [はい]に設定されている場合、SQLOLEDB は Microsoft Windows NT 認証モードを使用して、場所 プロパティ値と データソース プロパティ値で指定された SQL Server データベースへのユーザーアクセスを承認します。 このプロパティが [なし] に設定されている場合、SQLOLEDB は混合モードを使用して SQL Server データベースへのユーザー アクセスを承認します。 SQL Server ログインとパスワードは、ユーザー ID プロパティと Password プロパティで指定されます。
現在の言語 SQL Server 言語名を示します。 システム メッセージの選択と書式設定に使用される言語を識別します。 SQL Server に言語をインストールする必要がある場合、接続を開くと失敗します。
ネットワーク アドレス 場所の プロパティで指定された SQL Server のネットワーク アドレスを示します。
ネットワーク ライブラリ SQL Server との通信に使用されるネットワーク ライブラリ (DLL) の名前を示します。 名前には、パスまたは .dll ファイル名拡張子を含めてはなりません。 既定値は、SQL Server クライアント構成によって提供されます。
準備のための手順を用いる コマンドの準備時に SQL Server が一時ストアド プロシージャを作成するかどうかを決定します (準備済み プロパティによって)。
自動翻訳 OEM/ANSI 文字を変換するかどうかを示します。 このプロパティは、True または Falseに設定できます。 既定値は Trueです。 このプロパティを Trueに設定すると、SQLOLEDB は、複数バイトの文字列が SQL Server から取得または送信されるときに、OEM/ANSI 文字変換を実行します。 このプロパティが false に設定されている場合、SQLOLEDB は、マルチバイト文字列データに対して OEM/ANSI 文字変換を実行しません。
パケット サイズ ネットワーク パケット サイズをバイト単位で示します。 パケット サイズのプロパティ値は、512 ~ 32767 の間である必要があります。 既定の SQLOLEDB ネットワーク パケット サイズは 4096 です。
アプリケーション名 クライアント アプリケーション名を示します。
ワークステーション ID ワークステーションを識別する文字列。

コマンド オブジェクトの使用方法

SQLOLEDB は、ODBC、ANSI、および SQL Server 固有の Transact-SQL のアマルガムを有効な構文として受け入れます。 たとえば、次の SQL ステートメントでは、ODBC SQL エスケープ シーケンスを使用して LCASE 文字列関数を指定します。

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

LCASE は文字列を返し、すべての大文字を小文字に変換します。 ANSI SQL 文字列関数 LOWER は同じ操作を実行するため、次の SQL ステートメントは、前に示した ODBC ステートメントと同等の ANSI です。

SELECT customerid=LOWER(CustomerID) FROM Customers

SQLOLEDB は、コマンドのテキストとして指定された場合、どちらの形式のステートメントも正常に処理されます。

ストアド プロシージャ

SQLOLEDB コマンドを使用して SQL Server ストアド プロシージャを実行する場合は、コマンド テキストで ODBC プロシージャ呼び出しエスケープ シーケンスを使用します。 SQLOLEDB は、SQL Server のリモート プロシージャ コール メカニズムを使用して、コマンド処理を最適化します。 たとえば、次の ODBC SQL ステートメントは、Transact-SQL 形式よりも優先されるコマンド テキストです。

ODBC SQL

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

Transact-SQL

EXECUTE SalesByCategory 'Produce', '1995'

SQL Server の機能

SQL Server では、ADO は Command 入力に XML を使用し、Recordset オブジェクトではなく XML ストリーム形式で結果 取得できます。 詳細については、「コマンド入力 にストリームを使用する と、結果セットをストリーム に取得するを参照してください。

MDAC 2.7、MDAC 2.8、または Windows DAC 6.0 を使用したsql_variant データへのアクセス

Microsoft SQL Server には、sql_variantというデータ型があります。 OLE DB の DBTYPE_VARIANTと同様に、sql_variant データ型には、複数の異なる型のデータを格納できます。 ただし、DBTYPE_VARIANTsql_variantにはいくつかの重要な違いがあります。 また、ADO は、他のデータ型の処理方法とは異なる方法で sql_variant 値として格納されたデータを処理します。 次の一覧では、sql_variant型の列に格納されている SQL Server データにアクセスするときに考慮すべき問題について説明します。

  • MDAC 2.7、MDAC 2.8、および Windows Data Access Components (Windows DAC) 6.0 では、OLE DB Provider for SQL Server は sql_variant 型をサポートしています。 OLE DB Provider for ODBC はサポートしていません。

  • sql_variant 型は、DBTYPE_VARIANT データ型と完全には一致しません。 sql_variant 型は、DBTYPE_VARIANT でサポートされていないいくつかの新しいサブタイプ、GUIDANSI (UNICODE 以外) 文字列、BIGINTなど、いくつかの新しいサブタイプをサポートしています。 前述のサブタイプ以外のサブタイプを使用すると、正しく機能します。

  • sql_variant のサブタイプ NUMERIC が、サイズが DBTYPE_DECIMAL と一致しません。

  • 複数のデータ型強制型では、一致しない型が生成されます。 たとえば、GUID のサブタイプを持つ sql_variantDBTYPE_VARIANT に強制すると、safearray(バイト) のサブタイプになります。 この型を sql_variant に戻すと、配列 (バイト) の新しいサブタイプ作成されます。

  • レコードセットsql_variant データを含むフィールドは、リモート (マーシャリング) することも、sql_variant に特定のサブタイプが含まれている場合にのみ永続化することもできます。 次のサポートされていないサブタイプでデータをリモートまたは永続化しようとすると、Microsoft Persistence Provider (MSPersist) から実行時エラー (サポートされていない変換) が発生します。VT_VARIANTVT_RECORDVT_ILLEGALVT_UNKNOWNVT_BSTR、および VT_DISPATCH。

  • MDAC 2.7、MDAC 2.8、および Windows DAC 6.0 の OLE DB Provider for SQL Server には、ネイティブ バリアント を許可する という動的プロパティがあります。このプロパティを使用すると、開発者は、DBTYPE_VARIANTではなくネイティブ形式で sql_variant にアクセスできます。 このプロパティを設定し、Recordset をクライアント カーソル エンジン (adUseClient) で開くと、Recordset.Open 呼び出しは失敗します。 このプロパティが設定され、Recordset がサーバー カーソル (adUseServer) で開かれると、Recordset.Open 呼び出しは成功しますが、sql_variant 型の列にアクセスするとエラーが発生します。

  • MDAC 2.5 を使用するクライアント アプリケーションでは、microsoft SQL Server に対するクエリで sql_variant データを使用できます。 ただし、sql_variant データの値は文字列として扱われます。 このようなクライアント アプリケーションは、MDAC 2.7、MDAC 2.8、または Windows DAC 6.0 にアップグレードする必要があります。

レコードセットの動作

SQLOLEDB では、SQL Server カーソルを使用して、多くのコマンドによって生成される複数の結果をサポートすることはできません。 コンシューマーが SQL Server カーソルのサポートを必要とするレコードセットを要求した場合、使用されるコマンド テキストが結果として 1 つ以上のレコードセットを生成すると、エラーが発生します。

スクロール可能な SQLOLEDB レコードセットは、SQL Server カーソルでサポートされています。 SQL Server では、データベースの他のユーザーによる変更に影響を受けるカーソルに制限が課されます。 具体的には、一部のカーソル内の行を並べ替えることができないため、SQL ORDER BY 句を含むコマンドを使用してレコードセットを作成しようとすると失敗する可能性があります。

動的プロパティ

Microsoft OLE DB Provider for SQL Server は、開いていない 接続Recordset、および コマンド オブジェクトの プロパティ コレクションにいくつかの動的プロパティを挿入します。

次の表は、各動的プロパティの ADO 名と OLE DB 名のクロスインデックスです。 OLE DB プログラマリファレンスは、"Description" という用語で ADO プロパティ名を参照します。これらのプロパティの詳細については、「OLE DB プログラマー リファレンス」を参照してください。 インデックスで OLE DB プロパティ名を検索するか、「付録 C: OLE DB プロパティ 参照してください。

接続の動的プロパティ

次のプロパティは、Connection オブジェクトの Properties コレクションに追加されます。

ADO プロパティ名 OLE DB プロパティ名
アクティブなセッション DBPROP_ACTIVESESSIONS
非同期可能なアボート DBPROP_ASYNCTXNABORT
非同期可能なコミット DBPROP_ASYNCTNXCOMMIT
自動コミット分離レベル DBPROP_SESS_AUTOCOMMITISOLEVELS
カタログの場所 DBPROP_CATALOGLOCATION
カタログ用語 DBPROP_CATALOGTERM
列の定義 DBPROP_COLUMNDEFINITION
接続タイムアウト DBPROP_INIT_TIMEOUT
現在のカタログ DBPROP_CURRENTCATALOG
データ ソース DBPROP_INIT_DATASOURCE
データ ソース名 DBPROP_DATASOURCENAME
データ ソース オブジェクト スレッド モデル DBPROP_DSOTHREADMODEL
DBMS 名 DBPROP_DBMSNAME
DBMS バージョン DBPROP_DBMSVER
拡張プロパティ DBPROP_INIT_PROVIDERSTRING
GROUP BY 機能サポート DBPROP_GROUPBY
異種混成テーブルのサポート DBPROP_HETEROGENEOUSTABLES
識別子の大文字と小文字の区別 DBPROP_IDENTIFIERCASE
初期カタログ DBPROP_INIT_CATALOG
分離レベル DBPROP_SUPPORTEDTXNISOLEVELS
アイソレーション保持 DBPROP_SUPPORTEDTXNISORETAIN
ロケール識別子 DBPROP_INIT_LCID
最大インデックス サイズ DBPROP_MAXINDEXSIZE
最大行サイズ DBPROP_MAXROWSIZE
最大行サイズ (BLOB を含む) DBPROP_MAXROWSIZEINCLUDESBLOB
SELECT の最大テーブル数 DBPROP_MAXTABLESINSELECT
複数のパラメータセット DBPROP_MULTIPLEPARAMSETS
複数の結果 DBPROP_MULTIPLERESULTS
複数のストレージ オブジェクト DBPROP_MULTIPLESTORAGEOBJECTS
複数テーブルの更新 DBPROP_MULTITABLEUPDATE
NULL 照合順序 DBPROP_NULLCOLLATION
NULL 連結動作 DBPROP_CONCATNULLBEHAVIOR
OLE DB バージョン DBPROP_PROVIDEROLEDBVER
OLE オブジェクトのサポート DBPROP_OLEOBJECTS
行セットのサポートを開く DBPROP_OPENROWSETSUPPORT
選択リストの ORDER BY 列 DBPROP_ORDERBYCOLUMNSINSELECT
出力パラメーターの可用性 DBPROP_OUTPUTPARAMETERAVAILABILITY (出力パラメータの可用性)
参照渡しアクセサー DBPROP_BYREFACCESSORS
パスワード DBPROP_AUTH_PASSWORD
セキュリティ情報を保持する DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO
永続的な ID の種類 DBPROP_PERSISTENTIDTYPE
アボート動作の準備 DBPROP_PREPAREABORTBEHAVIOR
コミット動作の準備 DBPROP_PREPARECOMMITBEHAVIOR
プロシージャの用語 DBPROP_PROCEDURETERM
プロンプト DBPROP_INIT_PROMPT
プロバイダーフレンドリ名 DBPROP_PROVIDERFRIENDLYNAME
プロバイダー名 DBPROP_PROVIDERFILENAME
プロバイダーのバージョン DBPROP_PROVIDERVER
Read-Only データソース DBPROP_DATASOURCEREADONLY
コマンドでの行セット変換 DBPROP_ROWSETCONVERSIONSONCOMMAND
スキーマ用語 DBPROP_SCHEMATERM
スキーマの使用法 DBPROP_SCHEMAUSAGE
SQL サポート DBPROP_SQLSUPPORT
構造化ストレージ DBPROP_STRUCTUREDSTORAGE
サブクエリのサポート DBPROP_SUBQUERIES
テーブル用語 DBPROP_TABLETERM
トランザクション DDL DBPROP_SUPPORTEDTXNDDL
ユーザー ID DBPROP_AUTH_USERID
ユーザー名 DBPROP_USERNAME
ウィンドウ ハンドル DBPROP_INIT_HWND

レコードセットの動的プロパティ

次のプロパティは、Recordset オブジェクトの Properties コレクションに追加されます。

ADO プロパティ名 OLE DB プロパティ名
アクセス順序 DBPROP_ACCESSORDER
ストレージ オブジェクトのブロック DBPROP_BLOCKINGSTORAGEOBJECTS
ブックマークの種類 DBPROP_BOOKMARKTYPE
ブックマーク可能 DBPROP_IROWSETLOCATE
挿入された行を変更する DBPROP_CHANGEINSERTEDROWS
列の特権 DBPROP_COLUMNRESTRICT
列セット通知 DBPROP_NOTIFYCOLUMNSET
コマンド・タイムアウト DBPROP_COMMANDTIMEOUT
列の遅延 DBPROP_DEFERRED
記憶域オブジェクトの更新の遅延 DBPROP_DELAYSTORAGEOBJECTS
後方からフェッチする DBPROP_CANFETCHBACKWARDS
行の保持 DBPROP_CANHOLDROWS
IAccessor DBPROP_IAccessor
IColumnsInfo DBPROP_IColumnsInfo
IColumnsRowset DBPROP_IColumnsRowset
IConnectionPointContainer DBPROP_IConnectionPointContainer
IConvertType DBPROP_IConvertType
不動行 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
リテラル ブックマーク DBPROP_LITERALBOOKMARKS
リテラル行識別子 DBPROP_LITERALIDENTITY
開いている最大行数 DBPROP_MAXOPENROWS
保留中の最大行数 DBPROP_MAXPENDINGROWS
最大行数 DBPROP_MAXROWS
通知の粒度 DBPROP_NOTIFICATIONGRANULARITY
通知フェーズ DBPROP_NOTIFICATIONPHASES
取引されたオブジェクト DBPROP_TRANSACTEDOBJECT (トランザクション処理オブジェクト)
他のユーザーの変更が表示される DBPROP_OTHERUPDATEDELETE
他人の挿入物が表示される DBPROP_OTHERINSERT
独自の変更が表示される DBPROP_OWNUPDATEDELETE
独自の挿入を表示 DBPROP_OWNINSERT
中止時に保持する DBPROP_ABORTPRESERVE
コミット時に保持 DBPROP_COMMITPRESERVE
クイック再起動 DBPROP_QUICKRESTART
リエントラントイベント DBPROP_REENTRANTEVENTS
削除された行を削除する DBPROP_REMOVEDELETED
複数の変更を報告する DBPROP_REPORTMULTIPLECHANGES
保留中の挿入を戻す DBPROP_RETURNPENDINGINSERTS
行の削除通知 DBPROP_NOTIFYROWDELETE
行の最初の変更通知 DBPROP_NOTIFYROWFIRSTCHANGE
行挿入通知 DBPROP_NOTIFYROWINSERT
行権限 DBPROP_ROWRESTRICT
行の再同期通知 DBPROP_NOTIFYROWRESYNCH
行スレッド モデル DBPROP_ROWTHREADMODEL
行の変更取り消し通知 DBPROP_NOTIFYROWUNDOCHANGE
行の元に戻す削除通知 DBPROP_NOTIFYROWUNDODELETE
行挿入の取り消し通知 DBPROP_NOTIFYROWUNDOINSERT
行の更新通知 DBPROP_NOTIFYROWUPDATE
行セットフェッチ位置変更通知 DBPROP_NOTIFYROWSETFETCHPOSISIONCHANGE
行セットリリース通知 DBPROP_NOTIFYROWSETRELEASE
前にスクロール DBPROP_CANSCROLLBACKWARDS
サーバー カーソル DBPROP_SERVERCURSOR
削除されたブックマークをスキップする DBPROP_BOOKMARKSKIPPED
行識別の厳密性 DBPROP_STRONGITDENTITY
一意の行 DBPROP_UNIQUEROWS
更新可能性 DBPROP_UPDATABILITY
ブックマークを使用する DBPROP_BOOKMARKS

コマンドの動的プロパティ

次のプロパティは、Command オブジェクトの Properties コレクションに追加されます。

ADO プロパティ名 OLE DB プロパティ名
アクセス順序 DBPROP_ACCESSORDER
ベース パス SSPROP_STREAM_BASEPATH
ストレージ オブジェクトのブロック DBPROP_BLOCKINGSTORAGEOBJECTS
ブックマークの種類 DBPROP_BOOKMARKTYPE
ブックマーク可能 DBPROP_IROWSETLOCATE
挿入された行を変更する DBPROP_CHANGEINSERTEDROWS
列の特権 DBPROP_COLUMNRESTRICT
列セット通知 DBPROP_NOTIFYCOLUMNSET
コンテンツ タイプ SSPROP_STREAM_CONTENTTYPE
カーソルの自動フェッチ SSPROP_CURSORAUTOFETCH
列を遅延させる DBPROP_DEFERRED
準備の延期 SSPROP_DEFERPREPARE
記憶域オブジェクトの更新の遅延 DBPROP_DELAYSTORAGEOBJECTS
後方から取得する DBPROP_CANFETCHBACKWARDS(逆方向にフェッチ可能)
行を固定 DBPROP_CANHOLDROWS
IAccessor DBPROP_IAccessor
IColumnsInfo DBPROP_IColumnsInfo
IColumnsRowset DBPROP_IColumnsRowset
IConnectionPointContainer DBPROP_IConnectionPointContainer
IConvertType DBPROP_IConvertType
固定された行 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
リテラル ブックマーク DBPROP_LITERALBOOKMARKS
リテラル行 ID DBPROP_LITERALIDENTITY
ロック モード DBPROP_LOCKMODE
開いている最大行数 DBPROP_MAXOPENROWS
保留中の最大行数 DBPROP_MAXPENDINGROWS
最大行数 DBPROP_MAXROWS
通知の粒度 DBPROP_NOTIFICATIONGRANULARITY
通知フェーズ DBPROP_NOTIFICATIONPHASES
取引されたオブジェクト DBPROP_TRANSACTEDOBJECT
他のユーザーの変更が表示される DBPROP_OTHERUPDATEDELETE
その他の挿入が表示される DBPROP_OTHERINSERT
Output Encoding プロパティ DBPROP_OUTPUTENCODING
Output Stream プロパティ DBPROP_OUTPUTSTREAM
独自の変更が表示される DBPROP_OWNUPDATEDELETE
自分の挿入を表示 DBPROP_OWNINSERT
中止時に保持 DBPROP_ABORTPRESERVE
コミット時に保持 DBPROP_COMMITPRESERVE
クイック再起動 DBPROP_QUICKRESTART
再入イベント DBPROP_REENTRANTEVENTS
削除された行を削除する DBPROP_REMOVEDELETED
複数の変更を報告する DBPROP_REPORTMULTIPLECHANGES
保留中の挿入を返す DBPROP_RETURNPENDINGINSERTS
行の削除通知 DBPROP_NOTIFYROWDELETE
行の最初の変更に関する通知 DBPROP_NOTIFYROWFIRSTCHANGE
行挿入通知 DBPROP_NOTIFYROWINSERT
行権限 DBPROP_ROWRESTRICT
行の再同期通知 DBPROP_NOTIFYROWRESYNCH
行スレッド モデル DBPROP_ROWTHREADMODEL
行の元に戻す変更通知 DBPROP_NOTIFYROWUNDOCHANGE
行の削除を元に戻す通知 DBPROP_NOTIFYROWUNDODELETE
行挿入の取り消し通知 DBPROP_NOTIFYROWUNDOINSERT
行の更新通知 DBPROP_NOTIFYROWUPDATE
行セットフェッチ位置変更通知 DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE
行セットリリース通知 DBPROP_NOTIFYROWSETRELEASE
前にスクロール DBPROP_CANSCROLLBACKWARDS
サーバー カーソル DBPROP_SERVERCURSOR
挿入時のサーバー データ DBPROP_SERVERDATAONINSERT
削除されたブックマークをスキップする DBPROP_BOOKMARKSKIP
強固な行識別子 DBPROP_STRONGIDENTITY
更新可能性 DBPROP_UPDATABILITY
ブックマークを使用する DBPROP_BOOKMARKS
XML ルート SSPROP_STREAM_XMLROOT
XSL SSPROP_STREAM_XSL

Microsoft SQL Server OLE DB プロバイダーに関する具体的な実装の詳細と機能情報については、SQL Server プロバイダーのを参照してください。

関連項目

ConnectionString プロパティ (ADO)Provider プロパティ (ADO)Recordset オブジェクト (ADO)