Wenn man mal versehentlich (?) eine Varchar-Spalte nach image konvertierte (von nvarchar nach image geht aus nahe liegenden Gründen übrigens nicht), dann kann man den Inhalt übrigens doch noch lesen. Aber nur über zwei Ecken.

CREATE TABLE MyTest ( -- Testtabelle anlegen
id integer IDENTITY(1,1) NOT NULL,
str varchar(100) NULL)

INSERT INTO MyTest (str) – irgendwas einfügen
SELECT name
FROM sysobjects

ALTER TABLE MyTest – und nun nach image konvertieren
ALTER COLUMN str image NULL

Versucht man die direkte Rück-Konvertierung ("CONVERT(varchar(2000),str)"), dann stößt man an die Grenzen des üblen Image-Typs: "Explicit conversion from data type image to varchar is not allowed."
Bisher kenne ich schon viele gründe die "neuen" Typen varchar(max) bzw. varbinary(max) einzusetzen, aber warum jemand immer noch den Typ image verwendet, ist mir ein Rätsel.

Um die Konvertierung dennoch hinzubekommen, muss man über diese beiden Brücken gehen:

SELECT str, CONVERT(varchar(max),CONVERT(varbinary(max),str)) AS "converted"
FROM MyTest

Schon prima, oder? OK, das gehört zweifellos in die Kategorie "Probleme, die man nicht haben muss", aber das kommt in der Praxis durchaus vor… 😉