2010-11-06 36 views
16

J'ai lu sur Internet ces déclarations à propos SQL Server types de données:Y a-t-il une grande différence technique entre les types de données VARBINARY (MAX) et IMAGE?

  1. VARBINARY(MAX) - Les chaînes binaires avec une longueur variable peut stocker jusqu'à 2^31-1 octets.

  2. IMAGE - Les chaînes binaires avec une longueur variable up 2^31-1 (2,147,483,647) octets.

Y at-il une différence technique très grande entre VARBINARY(MAX) et IMAGE types de données?

S'il y a une différence: devons-nous personnaliser comment ADO.NET insère et met à jour le champ de données d'image dans SQL Server?

Répondre

19

Ils stockent les mêmes données: c'est aussi loin que cela se passe.

"image" est obsolète et dispose d'un ensemble limité de fonctionnalités et d'opérations qui fonctionnent avec. varbinary(max) peut être utilisé comme plus court varbinary (idem pour text et varchar(max)).

Ne pas utiliser image pour tout nouveau projet: il suffit de chercher ici pour les gens ont des problèmes avec image et text types de données en raison de la fonctionnalité limitée.

Exemples de SO: One, Two

+1

Limitation de VARBINARY (MAX): les mises à jour partielles ne sont pas prises en charge sur les colonnes ayant un FILESTREAM comme source. [(tekkies.co.uk)] (http://wiki.tekkies.co.uk/Porting_SQL_IMAGE_to_VARBINARY (MAX)) –

7

Je pense qu'ils sont techniquement similaires, mais il est important de noter les éléments suivants de the documentation:

ntext, le texte et les types de données d'image sera supprimée dans une version future de MicrosoftSQL Server. Évitez d'utiliser ces types de données dans les nouveaux travaux de développement et prévoyez de modifier les applications qui les utilisent actuellement. Utilisez nvarchar (max), varchar (max) et varbinary (max) à la place.

Types de données de longueur fixe et de longueur variable pour stocker de grandes données non-Unicode et Unicode et> des données binaires. Les données Unicode utilisent le jeu de caractères UNICODE UCS-2.

4

Ils stockent les mêmes données: cela est aussi loin que possible. "Image" est obsolète et possède un nombre limité de fonctions et d'opérations qui fonctionnent avec. varbinary (max) peut être utilisé comme varbinary plus court (idem pour text et varchar (max)). Ne pas utiliser d'image pour un nouveau projet: il suffit de chercher ici pour les questions folk ont ​​des types de données d'image et de texte en raison de la fonctionnalité limitée .

En fait, VARBINARY peut stocker des données qui peut être converti en un tableau d'octets, tels que les fichiers, ce qui est le même processus que IMAGE type de données utilise, donc, par ce point de vue, les deux types de données peut stocker les mêmes données. Mais VARBINARY ont une propriété de taille, tandis que IMAGE accepte n'importe quelle taille jusqu'aux limites de type de données, donc lorsque vous utilisez le type de données IMAGE, vous dépenserez plus de ressources pour stocker les mêmes données. Dans un Microsoft® SQL Server®, le type de données IMAGE est vraiment obsolète, alors vous devez parier au type de données VARBINARY.

Mais attention: Microsoft® SQL Server® CE® (y compris la dernière version 4.0) en utilisant toujours IMAGE type de données et probablement ce type de données ne sera pas "disparait" si tôt, car dans les versions Compact Edition, ce type de données est meilleur que tout autre pour le stockage de fichiers rapide.

0

J'ai trouvé par inadvertance une différence entre eux. Vous pouvez insérer une chaîne dans un type d'image mais pas dans un varbinary. C'est peut-être pourquoi MS désapprouve le type d'image car cela n'a aucun sens de définir une image avec une chaîne.

+0

Selon http://www.codeproject.com/Articles/128657/How-Do-I- Use-SQL-File-Stream il est vraiment possible de l'enregistrer, et il l'utilise même pour tester, et il est aussi possible de lire le texte directement dans le fichier, ce qui peut être génial pour le test, donc je ne sais pas voir une différence aussi longtemps que vous les moulages requis, et bien sûr thee est l'utilisation de chaînes non seulement pour les tests, mais aussi pour enregistrer des articles à base de texte (bien que le nom correct pour ce n'est pas "Image") –