Поддержка FILESTREAM
Компонент FILESTREAM, добавленный в SQL Server 2008, предоставляет способ хранения и доступа к большим двоичным значениям с помощью SQL Server либо непосредственного доступа к файловой системе Windows. Большим двоичным значением считается значение с размером больше 2 гигабайт (ГБ). Дополнительные сведения о поддержке усовершенствованного компонента FILESTREAM см. в разделе Общие сведения о FILESTREAM.
После открытия соединения с базой данных параметр @@TEXTSIZE устанавливается в значение -1 («неограниченный») по умолчанию.
Предусмотрена также возможность получения доступа и обновления столбцов FILESTREAM с помощью API файловой системы Windows. Дополнительные сведения см. в разделе Общие сведения о 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, то поведение типа данных varbinary(max) будет совместимо с SQL Server 2005. Это означает, что максимальный размер возвращаемых данных будет ограничен 2 ГБ. Для результирующих значений больше 2 ГБ произойдет усечение, и будет возвращено сообщение «Усечение строковых данных справа».
Если уровень совместимости типов данных установлен равным «80», то поведение клиента будет согласовано с поведением клиента низкого уровня.
Для клиентов, которые используют SQLOLEDB или другие поставщики, выпущенные до версии SQL Server 2005 собственного клиента для SQL Server, varbinary(max) будет сопоставлена с изображением.