FILESTREAM のサポート
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 に付属しているバージョンの SQL Server Native Client を使用してコンパイルしたクライアントで SQL Server 2012 に接続すると、varbinary(max) の動作で SQL Server 2005 との互換性が維持され、 返されるデータの最大サイズが 2 GB に制限されます。 戻り値が 2 GB より大きい場合は切り捨てが行われ、"文字列データの右側が切り捨てられました" という警告が返されます。
データ型の互換性が 80 に設定されている場合は、クライアントの動作で下位クライアントとの互換性が維持されます。
SQL Server 2005 バージョンの SQL Server Native Client より前にリリースされた SQLOLEDB などのプロバイダーを使用しているクライアントでは、varbinary(max) が image にマップされます。