Поддержка FILESTREAM

SQL Server 2008 и собственный клиент SQL Server 10.0 поддерживает улучшенную возможность FILESTREAM. Возможность FILESTREAM предоставляет способ хранения и доступа к большим двоичным значениям, либо через SQL Server, либо путем прямого доступа к файловой системе Windows. Большое двоичное значение - это значение больше 2 гигабайт (ГБ). Дополнительные сведения о поддержке FILESTREAM см. в разделе Общие сведения о FILESTREAM.

Когда откроется соединение с базой данных, @@TEXTSIZE будет установлено в значение -1 («неограниченный») по умолчанию.

Возможно также получать доступ и обновлять столбцы FILESTREAM с помощью API файловой системы Window. Дополнительные сведения см. в разделе Общие сведения о FILESTREAM.

Дополнительные сведения см. в следующих разделах.

Сведения об образцах приложений, которые демонстрируют эту функцию, см. в разделе Вопросы установки образцов кода и образцов баз данных SQL Server.

Запрос столбцов FILESTREAM

Наборы данных строк в OLE DB не сообщат, является ли столбец столбцом FILESTREAM. Чтобы создать столбец FILESTREAM, невозможно использовать ITableDefinition в OLE DB.

Функции каталога, такие как SQLColumns в ODBC не сообщат, является ли столбец столбцом FILESTREAM.

Чтобы создать столбцы FILESTREAM или обнаружить, какие существующие столбцы являются FILESTREAM, можно использовать столбец is_filestream представления каталога sys.columns.

Ниже представлен пример такого кода:

-- 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, входящего в SQL Server 2005, и приложение соединяется с SQL Server 2008, то поведение varbinary(max) будет совместимо с SQL Server 2005. То есть максимальный размер возвращаемых данных будет ограничен 2 ГБ. Для результирующих значений больше 2 ГБ произойдет усечение, у будет возвращено сообщение «усечение строковых данных справа».

Если совместимость типов данных установлена в 80, то поведение клиента будет согласовано с поведением клиента низкого уровня.

Для клиентов, которые используют SQLOLEDB или другие поставщики, выпущенные до версии SQL Server 2005 собственного клиента SQL Server, varbinary(max) будет сопоставлена изображению.