Compatibilidad con FILESTREAM

Se aplica a:SQL Server

Importante

SQL Server Native Client (a menudo abreviado SNAC) se ha quitado de SQL Server 2022 (16.x) y SQL Server Management Studio 19 (SSMS). No se recomienda SQL Server Native Client (SQLNCLI o SQLNCLI11) ni el proveedor OLE DB de Microsoft heredado para SQL Server (SQLOLEDB) para el desarrollo de nuevas aplicaciones. Cambie al nuevo controlador OLE DB de Microsoft (MSOLEDBSQL) para SQL Server o al controlador ODBC de Microsoft ODBC Driver for SQL Server más reciente de ahora en adelante. Para SQLNCLI que se incluye como componente de SQL Server motor de base de datos (versiones 2012 a 2019), consulte esta excepción de ciclo de vida de soporte técnico.

FILESTREAM proporciona un modo de almacenar y obtener acceso a valores binarios grandes, ya sea a través de SQL Server o mediante acceso directo al sistema de archivos de Windows. Un valor binario grande es un valor superior a 2 gigabytes (GB). Para obtener más información acerca de la compatibilidad mejorada con FILESTREAM, consulte FILESTREAM (SQL Server).

Cuando se abra una conexión de base de datos, @@TEXTSIZE se establecerá en -1 («ilimitado») de forma predeterminada.

También es posible obtener acceso a columnas FILESTREAM y actualizarlas mediante las API del sistema de archivos de Windows.

Para obtener más información, vea los temas siguientes:

Consulta de columnas FILESTREAM

Los conjuntos de filas de esquema de OLE DB no notificarán si una columna es una columna FILESTREAM. ITableDefinition de OLE DB no puede utilizarse para crear una columna FILESTREAM.

Las funciones de catálogo como SQLColumns en ODBC no notificarán si una columna es una columna FILESTREAM.

Para crear columnas FILESTREAM o detectar qué columnas existentes son columnas FILESTREAM, puede usar la columna is_filestream de la vista de catálogo sys.columns.

A continuación se muestra un ejemplo:

-- 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');  

Compatibilidad con niveles inferiores

Si el cliente se compiló con la versión de SQL Server Native Client que se incluyó con SQL Server 2005 (9.x) y la aplicación se conecta a una versión más reciente de SQL Server, el comportamiento varbinary(max) será compatible con SQL Server 2005 (9.x). Es decir, el tamaño máximo de los datos devueltos se limitará a 2 GB. Los resultados cuyo valor supere los 2 GB, se truncarán, y se devolverá una advertencia de tipo "datos de cadena truncados por la derecha".

Cuando la compatibilidad de tipo de datos se establezca en 80, el comportamiento del cliente será coherente con el comportamiento del cliente de nivel inferior.

Para los clientes que usan SQLOLEDB u otros proveedores que se publicaron antes de la versión de SQL Server 2005 (9.x) de SQL Server Native Client, varbinary(max) se asignará a la imagen.

Consulte también

Características de SQL Server Native Client