¿Qué tipo de SqlDbType se asigna a varBinary (max)? SqlDbType.VarBinary dice que está limitado a 8K. La documentación de SQL Server dice que varbinary (max) puede almacenar aprrox. 2GB. Pero SqlDbType.VarBinary dice que está limitado a 8K.
¿Qué tipo de SqlDbType se asigna a varBinary (max)?
Respuesta
SqlDbType.VarBinary con la longitud -1 es el equivalente a varbinary (max), al menos en teoría. Pero el problema es un poco más complejo, ya que también hay un tipo (no un valor enum), es decir, SqlTypes.SqlBytes
que se puede usar. Y existe SqlTypes.SqlFileStream
que se puede usar también para los tipos VARBINARY(MAX)
, cuando tienen el atributo FILESTREAM
.
Pero el problema es que ninguna de estas enumeraciones o tipos cubre el problema real al trabajar con las columnas VARBINARY(MAX)
en ADO.Net: consumo de memoria. Todos estos tipos, cuando se usen 'out-of-the-box', crearán copias del valor asignado como una única matriz en la memoria, que en el mejor de los casos no es eficiente, pero a medida que el contenido se hace más grande se vuelve imposible de usar debido a fallas de asignación . Tengo un par de artículos que muestran la forma correcta de manejar VARBINARY(MAX)
valores en ADO.Net utilizando la semántica de transmisión que evitan la creación de copias en memoria de todo el contenido:
Esto podría ayudar: http://msdn.microsoft.com/en-us/library/a1904w6t.aspx
tan feo como podría ser, SqlDbType.Image parece ser el camino a seguir. Parece que necesito actualizar mi ORM, ya que cualquier cosa de más de 8k lo rompería actualmente.
Prueba esto:
SqlParameter blobParam = new SqlParameter("@blob", SqlDbType.VarBinary, buffer.Length);
blobParam.Value = buffer;
cmd.Parameters.Add(blobParam);
ver si funciona
- 1. ¿Qué tipo de SqlDbType se asigna a varChar (max)?
- 2. Cambiar el tipo de columna de ntext a varbinary (max)
- 3. varbinary (max) datatype invalid
- 4. EF4 Asignación varbinary (max) a Binary - Código Primer error
- 5. SQL Server 2008 R2 Varbinary Max Size
- 6. SQL Server varbinary (max) a Image data type
- 7. conversión implícita del tipo de datos nvarchar a varbinary (max) no está permitido
- 8. Recuperar varbinary (MAX) de SQL Server a byte [] en C#
- 9. Fluido NHibernate, varbinary (max) y SQLite
- 10. ¿Usando DBNull.Value con SqlParameter sin conocer sqlDbType?
- 11. Espacio real máximo en varbinary (max) en SQL Server
- 12. ¿Qué tipo de datos SQL asigna Oracle a "count (*)"?
- 13. Convertir DataColumn.DataType a SqlDbType
- 14. ¿Cómo almacenar imágenes en una columna varbinary (max)?
- 15. Servidor SQL Varbinary (max): seleccione un subconjunto de bytes del campo varbinary
- 16. ¿Por qué JAXB a veces se asigna a JAXBElement?
- 17. SQL Server, nvarchar (MAX) o ntext, image o varbinary?
- 18. Blob binario truncado a 8000 bytes - SQL Server 2008/varbinary (max)
- 19. ¿Cómo inserto/recupero archivos de Excel a la columna varbinary (max) en SQL Server 2008?
- 20. SqlDbType y Geography
- 21. varbinary a cadena en SQL Server
- 22. ¿Cómo cargo un archivo a una columna varbinary (max) en SQL Server 2008, usando TSQL?
- 23. ¿Cómo se pasa un tipo de cadena a un método o se asigna a una variable en C#?
- 24. ¿Qué sucede cuando se asigna un tipo que contiene un lambda?
- 25. Max tipo integral en C#
- 26. XML no válido en una columna varbinary (max) en SQL Server 2005
- 27. Longitud de la extensión de archivos varbinary (max) en SQL Server 2008
- 28. ¿Existe una gran diferencia técnica entre los tipos de datos VARBINARY (MAX) y de IMAGE?
- 29. ¿Por qué string.Replace ("X", "Y") funciona solo cuando se asigna a una nueva cadena?
- 30. ¿Qué datos pueden almacenarse en el tipo de datos varbinary de SQL Server?
He usado -1 y funciona bien – Abacus
Realmente extraño que lo anterior no funcionó para mí. Tuve que escribir: dtProducts.Columns.Add (new DataColumn ("Cover", typeof (byte [])) {AllowDBNull = true}); fíjate en el byte [] ... esto es lo que funcionó para mí. – Johan