Devo memorizzare i file binari nel database di SQL Server. Qual è il miglior tipo di dati tra Varbinary e Image?
Risposte:
Poiché l'immagine è deprecata, dovresti usare varbinary.
per Microsoft (grazie per il collegamento @Christopher)
I tipi di dati ntext, text e image verranno rimossi in una versione futura di Microsoft SQL Server. Evita di utilizzare questi tipi di dati in un nuovo lavoro di sviluppo e pianifica di modificare le applicazioni che li utilizzano attualmente. Utilizza invece nvarchar (max), varchar (max) e varbinary (max).
Tipi di dati a lunghezza fissa e variabile per l'archiviazione di dati binari e caratteri non Unicode e Unicode di grandi dimensioni. I dati Unicode utilizzano il set di caratteri UNICODE UCS-2.
C'è anche il piuttosto spiffy FileStream, introdotto in SQL Server 2008.
FileStreamè solo un comportamento di archiviazione. Filestream viene implementato utilizzando varbinary(max)e apportando modifiche all'istanza del server sql.
https://docs.microsoft.com/en-us/sql/t-sql/data-types/ntext-text-and-image-transact-sql
Immagine
Dati binari a lunghezza variabile da 0 a 2 ^ 31-1 (2.147.483.647) byte. È ancora supportato per utilizzare il tipo di dati dell'immagine, ma tieni presente:
https://docs.microsoft.com/en-us/sql/t-sql/data-types/binary-and-varbinary-transact-sql
varbinary [(n | max)]
Dati binari a lunghezza variabile. n può essere un valore compreso tra 1 e 8.000. max indica che la dimensione di archiviazione massima è 2 ^ 31-1 byte. La dimensione di archiviazione è la lunghezza effettiva dei dati inseriti + 2 byte. I dati immessi possono avere una lunghezza di 0 byte. Il sinonimo ANSI SQL per varbinary è binario variabile.
Quindi entrambi hanno le stesse dimensioni (2 GB). Ma fai attenzione a:
Sebbene la fine del tipo di dati "immagine" non sia ancora determinata, dovresti usare l'equivalente di prova "futuro".
Ma devi chiederti: perché archiviare BLOB in una colonna?