2010-11-06 17 views
16

que estaba leyendo en Internet estas declaraciones acerca del servidor tipos de datos SQL :¿Existe una gran diferencia técnica entre los tipos de datos VARBINARY (MAX) y de IMAGE?

  1. VARBINARY(MAX) - Las series binarias con una longitud variable pueden almacenar hasta a 2^31-1 bytes.

  2. IMAGE - Las series binarias con una longitud variable hasta 2^31-1 (2,147,483,647) bytes.

¿Hay una diferencia técnica muy grande entre los tipos VARBINARY(MAX) y IMAGE de datos?

Si hay una diferencia: ¿tenemos que personalizar cómo ADO.NET inserta y actualiza el campo de datos de imagen en SQL Server?

Respuesta

19

Almacenan los mismos datos: esto es todo lo que va.

"image" está en desuso y tiene un conjunto limitado de características y operaciones que funcionan con él. varbinary(max) se puede operar como más corto varbinary (ídem para text y varchar(max)).

No utilice image para ningún proyecto nuevo: solo busque aquí los problemas que tienen los tipos de datos image y text debido a la funcionalidad limitada.

Ejemplos de SO: One, Two

+1

Limitación de VARBINARIO (MAX): las actualizaciones parciales no son compatibles con las columnas que tienen un FILESTREAM como fuente. [(tekkies.co.uk)] (http://wiki.tekkies.co.uk/Porting_SQL_IMAGE_to_VARBINARY (MAX)) –

7

creo que técnicamente son similares, pero es importante tener en cuenta lo siguiente de the documentation:

ntext tipos de texto y de datos de imagen se quitará en una versión futura de MicrosoftSQL Server. Evite utilizar estos tipos de datos en el nuevo trabajo de desarrollo y planee modificar las aplicaciones que actualmente los utilizan. Use nvarchar (max), varchar (max) y varbinary (max) en su lugar.

Tipos de datos de longitud fija y fija para almacenar caracteres grandes no Unicode y Unicode y> datos binarios. Los datos Unicode usan el juego de caracteres UNICODE UCS-2.

4

Almacenan los mismos datos: esto es lo más de lo que cabe.

"imagen" está en desuso y tiene un conjunto limitado de funciones y operaciones que funcionan con él. varbinary (max) puede ser operado como más corto varbinary (ídem para texto y varchar (max)).

No utilice la imagen para ningún nuevo proyecto: simplemente busque aquí los números que tienen los tipos de datos de texto e imagen debido a la funcionalidad limitada de .

De hecho, VARBINARY puede almacenar más datos que se puede convertir en una matriz de bytes, tales como archivos, y este es el mismo proceso que utiliza IMAGE tipo de datos, por lo que, por este punto de vista, los dos tipos de datos puede almacenar los mismos datos Pero VARBINARY tiene una propiedad de tamaño, mientras que IMAGE acepta cualquier tamaño hasta los límites de tipo de datos, por lo que al usar el tipo de datos IMAGE, gastará más recursos para almacenar los mismos datos. En un Microsoft® SQL Server®, el tipo de datos IMAGE es realmente obsoleto, entonces debe apostar en VARBINARY tipo de datos.

Pero tenga cuidado: Microsoft® SQL Server® CE ® (incluyendo la última versión 4.0) sigue utilizando IMAGE tipo de datos y, probablemente, este tipo de datos no "desaparece" tan pronto, porque en las versiones Compact Edition, este el tipo de datos es mejor que cualquier otro para el almacenamiento rápido de archivos.

0

Inadvertidamente he encontrado una diferencia entre ellos. Puede insertar una cadena en un tipo de imagen pero no en un varbinary. Quizás es por eso que MS está desaprobando el tipo de imagen, ya que realmente no tiene sentido establecer una imagen con una cadena.

+0

Según http://www.codeproject.com/Articles/128657/How-Do-I- Use-SQL-File-Stream es realmente posible guardarlo, e incluso lo está usando para probar, y también es posible leer el texto directamente en el archivo, lo que puede ser genial para las pruebas, por lo que no lo hago vea una diferencia siempre y cuando tenga los moldes necesarios y, por supuesto, use cuerdas no solo para realizar pruebas sino también para guardar artículos basados ​​en texto (aunque el nombre correcto para esto no es "Imagen") –

Cuestiones relacionadas