FILESTREAM のサポート (OLE DB)

適用対象: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 に切り替えてください。

SQL SERVER 2008 (10.0.x) および SQL Server Native Client 10.0 以降、OLE DB では拡張 FILESTREAM 機能がサポートされています。 この機能の詳細については、「 FILESTREAM サポート」を参照してください。 サンプルについては、「FILESTREAM と OLE DB」を参照してください。

アプリケーションで 2 GB より大きい varbinary(max) 値を送受信するには、パラメーターと結果のバインドで DBTYPE_IUNKNOWN を使用します。 パラメーターの場合、プロバイダーは ISequentialStream および ISequentialStream を返す結果に対して IUnknown::QueryInterface を呼び出す必要があります。

OLE DB の場合は、ISequentialStream 値に関連するチェックが緩和されます。 wTypeDBBINDING 構造体内で DBTYPE_IUNKNOWN である場合、dwPart から DBPART_LENGTH を省略するか、データの長さ (データ バッファー内のオフセット obLength) を ~0 に設定することにより、長さのチェックを無効にすることができます。 この場合、プロバイダーは値の長さをチェックせず、ストリームで利用可能なすべてのデータを要求し、返します。 この変更は、SQL Server 2005 (9.x) (以降の) サーバーに接続する場合に限り、すべてのラージ オブジェクト (LOB) 型と XML に適用されます。 これにより、既存のアプリケーションや下位レベルのサーバーとの一貫性や下位互換性を維持しつつ、より柔軟な開発が可能になります。

この変更は、データを転送するすべてのインターフェイス (主に IRowset:: GetData、ICommand:: Execute、および IRowsetFastLoad::InsertRow) に影響します。

参照

SQL Server Native Client プログラミング