Поделиться через


Поддержка FILESTREAM

Область применения: SQL Server

Внимание

SQL Server Native Client (SNAC) не поставляется с:

  • SQL Server 2022 (16.x) и более поздних версий
  • SQL Server Management Studio 19 и более поздних версий

Собственный клиент SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуется для разработки новых приложений.

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

Сведения о SQLNCLI, которые поставляется в качестве компонента SQL Server ядро СУБД (версии 2012–2019), см. в этом исключении жизненного цикла поддержки.

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

После открытия подключения к базе данных для параметра @@TEXTSIZE устанавливается значение –1 ("неограниченный") по умолчанию.

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

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

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

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

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

См. также

Компоненты собственного клиента SQL Server