Compatibilidad con FILESTREAM
Se aplica a: SQL Server
Importante
SQL Server Native Client (SNAC) no se incluye con:
- SQL Server 2022 (16.x) y versiones posteriores
- SQL Server Management Studio 19 y versiones posteriores
Sql Server Native Client (SQLNCLI o SQLNCLI11) y el proveedor MICROSOFT OLE DB heredado para SQL Server (SQLOLEDB) no se recomiendan para el desarrollo de aplicaciones nuevas.
En el caso de los proyectos nuevos, use uno de los siguientes controladores:
Para SQLNCLI que se incluye como componente de motor de base de datos de SQL Server (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, consulte 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.