Solución:
El problema aparentemente no fue el servidor SQL, sino el sistema NAV que actualiza el campo. Existe una propiedad de compresión que se puede utilizar en campos BLOB en NAV, que no forma parte de SQL Server. Entonces, la compresión personalizada hizo que los datos fueran ilegibles, aunque la conversión funcionó.
La solución fue desactivar la compresión a través del Diseñador de objetos, Diseñador de tablas, Propiedades del campo (Mayús + F4 en la fila del campo).
Después de eso, la extracción de datos se puede realizar con, por ejemplo: seleccione convertir (varchar (max), emitir (BLOBFIELD como binario)) de la tabla
¡Gracias por todas las respuestas que fueron correctas en muchos sentidos!
La respuesta aceptada me funciona solo para los primeros 30 caracteres. Esto funciona para mi:
select convert(varchar(max), convert(varbinary(max),myBlobColumn)) FROM table_name
Depende de cómo se pusieron inicialmente los datos en la columna. Pruebe cualquiera de estos como debería funcionar:
SELECT CONVERT(NVarChar(40), BLOBTextToExtract)
FROM [NavisionSQL$Customer];
O si fuera solo varchar
…
SELECT CONVERT(VarChar(40), BLOBTextToExtract)
FROM [NavisionSQL$Customer];
Usé este script para verificar y probar en SQL Server 2K8 R2:
DECLARE @blob VarBinary(MAX) = CONVERT(VarBinary(MAX), 'test');
-- show the binary representation
SELECT @blob;
-- this doesn't work
SELECT CONVERT(NVarChar(100), @blob);
-- but this does
SELECT CONVERT(VarChar(100), @blob);