VarBinary vs Image SQL Server Data Type per archiviare dati binari?


90

Devo memorizzare i file binari nel database di SQL Server. Qual è il miglior tipo di dati tra Varbinary e Image?

Risposte:


141

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.


1
@ cmsjr: forse perché, come dice Microsoft: "il tipo di dati immagine verrà rimosso in una versione futura di Microsoft SQL Server".
— Ehsan

4
@ Ehsan Posso solo presumere che tu non abbia familiarità con il termine deprecato. In generale, quando dici che qualcosa è deprecato, stai dicendo che non dovrebbe essere usato perché verrà rimosso in futuro. Quindi il mio post e la citazione che hai postato nel tuo commento significano essenzialmente la stessa cosa.
— cmsjr

Nessun problema, sollevi un buon punto. Aggiornerò il fraseggio.
— cmsjr

Non la definirei una risposta "solo collegamento". La definirei una risposta "succinta e corretta a una domanda che include alcuni collegamenti utili per coloro che sono inclini a saperne di più".
— cmsjr

2
Sarò franco e ti farò sapere che non ero incline a fare il montaggio perché ti sei avvicinato con un tono offensivo e minaccioso. Forse non era tua intenzione essere scortese, ma con me sembrava che lo fossi. La maleducazione può spesso portare le persone a respingere idee altrimenti buone. Ho migliorato il contenuto come mi hai suggerito, ma ti chiederei anche di riflettere su come presenti i tuoi suggerimenti.
— cmsjr

13

varbinary(max) è la strada da percorrere (introdotto in SQL Server 2005)


9

C'è anche il piuttosto spiffy FileStream, introdotto in SQL Server 2008.


spiffy: intelligente in apparenza ?
— Liam

"piuttosto elegante" ha un significato un po 'più generale (che semplicemente "elegante") nel vernacolo comune ... Più appropriato penso.
— Grantly,

Questa domanda riguarda i formati delle colonne ed FileStreamè solo un comportamento di archiviazione. Filestream viene implementato utilizzando varbinary(max)e apportando modifiche all'istanza del server sql.
— paqogomez

6

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:

https://docs.microsoft.com/en-us/sql/database-engine/deprecated-database-engine-features-in-sql-server-2016#features-not-supported-in-a-future-version- di-sql-server

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?

https://docs.microsoft.com/en-us/sql/relational-databases/blob/compare-options-for-storing-blobs-sql-server

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.