Supporto FILESTREAM
Si applica a: SQL Server
Importante
SQL Server Native Client (SNAC) non viene fornito con:
- SQL Server 2022 (16.x) e versioni successive
- SQL Server Management Studio 19 e versioni successive
SQL Server Native Client (SQLNCLI o SQLNCLI11) e il provider OLE DB Microsoft legacy per SQL Server (SQLOLEDB) non sono consigliati per lo sviluppo di nuove applicazioni.
Per i nuovi progetti, usare uno dei driver seguenti:
Per SQLNCLI fornito come componente del motore di database di SQL Server (versioni dal 2012 al 2019), vedere questa Eccezione relativa al ciclo di vita del supporto.
FILESTREAM consente di archiviare e accedere a valori binari di grandi dimensioni mediante SQL Server o accesso diretto al file system di Windows. Un valore binario di grandi dimensioni è un valore superiore a 2 gigabyte (GB). Per altre informazioni sul supporto FILESTREAM avanzato, vedere FILESTREAM (SQL Server).
Quando si apre una connessione al database, per impostazione predefinita @@TEXTSIZE verrà impostato su -1 (senza limiti).
È anche possibile accedere alle colonne FILESTREAM e aggiornarle utilizzando l'API del file system di Windows.
Per ulteriori informazioni, vedi gli argomenti seguenti:
Esecuzione di una query sulle colonne FILESTREAM
I set di righe degli schemi in OLE DB non indicano se una colonna è di tipo FILESTREAM. Impossibile utilizzare ITableDefinition in OLE DB per creare una colonna FILESTREAM.
Le funzioni del catalogo, ad esempio SQLColumns in ODBC, non segnalano se una colonna è una colonna FILESTREAM.
Per creare colonne FILESTREAM o per individuare le colonne di tipo FILESTREAM esistenti, è possibile utilizzare la colonna is_filestream della vista di catalogo sys.columns.
Di seguito è riportato un esempio:
-- 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à con le versioni precedenti
Se il client è stato compilato usando la versione di SQL Server Native Client inclusa in SQL Server 2005 (9.x) e l'applicazione si connette a una versione più recente di SQL Server, il comportamento varbinary(max) sarà compatibile con SQL Server 2005 (9.x). Questo significa che i dati restituiti avranno come dimensione massima 2 GB. Per valori di dimensioni superiori a 2 GB, verrà eseguito un troncamento e restituito l'avviso "Troncamento a destra dei dati della stringa".
Quando la compatibilità con il tipo di dati è impostata su 80, il comportamento client sarà coerente con il comportamento del client legacy.
Per i client che usano SQLOLEDB o altri provider rilasciati prima della versione di SQL Server 2005 (9.x) di SQL Server Native Client, verrà eseguito il mapping di varbinary(max) all'immagine.