FILESTREAM のサポート
適用対象: SQL Server
重要
SQL Server Native Client (SNAC) は同梱されていません。
- SQL Server 2022 (16.x) 以降のバージョン
- SQL Server Management Studio 19 以降のバージョン
SQL Server Native Client (SQLNCLI または SQLNCLI11) と従来の Microsoft OLE DB Provider for SQL Server (SQLOLEDB) は、新しいアプリケーション開発には推奨されません。
新しいプロジェクトの場合は、次のいずれかのドライバーを使用します。
SQL Server データベース エンジン (バージョン 2012 から 2019) のコンポーネントとして付属する SQLNCLI については、この「サポート ライフサイクルの例外」を参照してください。
FILESTREAM を使用すると、SQL Server を経由するか、Windows ファイル システムに直接アクセスすることで、大きなバイナリ値の格納やアクセスが可能になります。 大きなバイナリ値とは、2 ギガバイト (GB) よりも大きい値です。 強化された FILESTREAM のサポートの詳細については、「FILESTREAM (SQL Server)」を参照してください。
データベース接続を開くと、@@TEXTSIZE が既定で -1 (無制限) に設定されます。
Windows ファイル システムの API を使用して、FILESTREAM 列にアクセスし、更新することもできます。
詳細については、次のトピックを参照してください。
FILESTREAM 列のクエリ
OLE DB のスキーマ行セットでは、列が FILESTREAM 列かどうかは報告されません。 また、OLE DB の ITableDefinition を使用して FILESTREAM 列を作成することはできません。
ODBC の SQLColumns などのカタログ関数では、列が FILESTREAM 列であるかどうかは報告されません。
FILESTREAM 列を作成する場合や、既存の FILESTREAM 列を検出する場合は、sys.columns カタログ ビューの is_filestream 列を使用できます。
以下に例を示します。
-- Create a table with a FILESTREAM column.
CREATE TABLE Bob_01 (GuidCol1 uniqueidentifier ROWGUIDCOL NOT NULL UNIQUE DEFAULT NEWID(), IntCol2 int, varbinaryCol3 varbinary(max) FILESTREAM);
-- Find FILESTREAM columns.
SELECT name FROM sys.columns WHERE is_filestream=1;
-- Determine whether a column is a FILESTREAM column.
SELECT is_filestream FROM sys.columns WHERE name = 'varbinaryCol3' AND object_id IN (SELECT object_id FROM sys.tables WHERE name='Bob_01');
下位互換性
SQL Server 2005 (9.x) に含まれていたバージョンの SQL Server Native Client を使用してクライアントがコンパイルされ、アプリケーションが新しいバージョンの SQL Server に接続している場合、 varbinary(max) 動作は SQL Server 2005 (9.x) と互換性があります。 返されるデータの最大サイズが 2 GB に制限されます。 戻り値が 2 GB より大きい場合は切り捨てが行われ、"文字列データの右側が切り捨てられました" という警告が返されます。
データ型の互換性が 80 に設定されている場合は、クライアントの動作で下位クライアントとの互換性が維持されます。
SQL Server 2005 (9.x) バージョンの SQL Server Native Client より前にリリースされた SQLOLEDB または他のプロバイダーを使用するクライアントの場合、 varbinary(max) がイメージにマップされます。