Prise en charge de FILESTREAM
S'applique à : SQL Server
Important
SQL Server Native Client (SNAC) n’est pas fourni avec :
- 2022 - SQL Server 16 (16.x) et versions ultérieures
- SQL Server Management Studio 19 et versions ultérieures
SQL Server Native Client (SQLNCLI ou SQLNCLI11) et le fournisseur Microsoft OLE DB pour SQL Server (SQLOLEDB) hérité ne sont pas recommandés pour le développement de nouvelles applications.
Pour les nouveaux projets, utilisez l'un des pilotes suivants :
Pour SQLNCLI qui est fourni en tant que composant du moteur de base de données SQL Server (versions 2012 à 2019), consultez cette exception du cycle de vie du support.
FILESTREAM permet de stocker et d'accéder à de grandes valeurs binaires, soit par le biais de SQL Server, soit par accès direct au système de fichiers Windows. Une grande valeur binaire est une valeur supérieure à 2 gigaoctets (Go). Pour plus d'informations sur la prise en charge FILESTREAM améliorée, consultez FILESTREAM (SQL Server).
Lorsqu’une connexion de base de données est ouverte, @@TEXTSIZE est défini avec la valeur -1 (« illimité ») par défaut.
Il est également possible d'accéder et de mettre à jour des colonnes FILESTREAM à l'aide d'API de système de fichiers Windows.
Pour plus d’informations, voir les rubriques suivantes :
Interrogation de colonnes FILESTREAM
Les ensembles de lignes de schéma dans OLE DB ne signalent pas si une colonne est une colonne FILESTREAM. ITableDefinition dans OLE DB ne peut pas être utilisé pour créer une colonne FILESTREAM.
Les fonctions catalogue telles que SQLColumns dans ODBC ne signalent pas si une colonne est une colonne FILESTREAM.
Pour créer des colonnes FILESTREAM ou détecter les colonnes existantes qui sont des colonnes FILESTREAM, vous pouvez utiliser la colonne is_filestream de l’affichage catalogue sys.columns.
Par exemple :
-- 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');
Compatibilité de bas niveau
Si votre client a été compilé à l’aide de la version de SQL Server Native Client incluse avec SQL Server 2005 (9.x) et que l’application se connecte à une version plus récente de SQL Server, le comportement varbinary(max) sera compatible avec SQL Server 2005 (9.x). Autrement dit, la taille maximale des données retournées est limitée à 2 Go. Pour les valeurs de résultat supérieures à 2 Go, une troncation se produit et un avertissement « Troncation à droite de la chaîne de données » est retourné.
Lorsque la compatibilité de type de données est définie à 80, le comportement client est cohérent avec le comportement client de bas niveau.
Pour les clients qui utilisent SQLOLEDB ou d’autres fournisseurs qui ont été publiés avant la version sql Server 2005 (9.x) de SQL Server Native Client, varbinary(max) sera mappé à l’image.