Как преобразовать поле изображения SQL server в текст?
У меня есть поле в базе данных Sql Server, тип данных этого поля-изображение, по-видимому, содержимое этого поля-текст из электронной почты.
Как извлечь читаемый текст, если тип данных-это изображение?
Что я уже пробовал:
Я перепробовал множество вариаций -
язык SQL -
select cast(cast(emailCompressed as varbinary(MAX)) as nvarchar(max)) as emailCompressed from [DB].[EmailMessage] where emailID = 1
и
С# -
byte[] gzBuffer = (byte[])reader["emailCompressed"]; using (MemoryStream ms = new MemoryStream()) { int msgLength = BitConverter.ToInt32(gzBuffer, 0); ms.Write(gzBuffer, 0, gzBuffer.Length); byte[] buffer = new byte[msgLength]; ms.Position = 0; int length; using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress)) { length = zip.Read(buffer, 0, buffer.Length); } var data = new byte[length]; Array.Copy(buffer, data, length); string s = Encoding.UTF8.GetString(data); }
Richard Deeming
NB: типы данных ntext, text и image[^] будет удален в будущей версии SQL Server. Избегайте использования этих типов данных в новых разработках и планируйте изменять приложения, которые в настоящее время их используют. Воспользуйся nvarchar(max)
, varchar(max)
, и varbinary(max)
вместо.
Это предупреждение было в документации Microsoft в течение 15 лет. Вероятно, было бы неплохо начать обновлять свои базы данных, чтобы вместо этого использовать поддерживаемые типы. :)
the_smiths
Я полностью с тобой согласен, приятель. Я бы никогда не использовал поле изображения сам, но это не моя база данных, это из старой системы. Есть какие-нибудь идеи решения? Овации.