Конвертировать image datatype в varchar в sql server 2008

У нас есть база данных TestPartner в SQL Server. Описания ошибок хранятся в столбце типа данных "image". Нам нужно написать запрос для отображения данных в виде html-таблицы. У нас есть запрос, который считывает данные из соответствующих таблиц для отображения информации в виде xml с помощью For XML. Но при преобразовании типа данных image в varchar возникает исключение: "FOR XML не смог сериализовать данные для узла 'TD', потому что они содержат символ (0x0002), который не разрешен в XML. Чтобы получить эти данные с помощью FOR XML, преобразуйте их в бинарный, varbinary или image тип данных и используйте директиву BINARY BASE64.".

Запрос:

DECLARE @ResultsTable nvarchar(MAX)
--Create the XML table with the query results
SET @ResultsTable =
N'<H3>QA Automation Tests Results Summary </H3>' +
N'<table border="1">' +
N'<tr><th>Test Name</th><th>Execution Date</th>' +
N'<th>Check Name</th><th>Description</th></tr>' +
CAST ( (
select distinct Name as TD, '',
(Select CAST(CONVERT(nchar(100),CAST( TPCommandDetail AS BINARY(100) )) as VARCHAR(100)) ) as TD, ''
FROM TestPartnerDB.TP_RESULTS_RECORDS
FOR XML PATH('tr'), TYPE 
) AS nvarchar(max) ) + N'</table>'

SELECT @ResultsTable

Удивительно, но это работает для некоторых записей, но как только вы увеличиваете размер, скажем, до 200. Он снова выдает ошибку. Я также пробовал:

Select CONVERT(varchar(1000), convert(varbinary(1000), tpcommanddetail)) From TestPartnerDB.TP_RESULTS_RECORDS

Это возвращает странный символ для каждой строки. Может кто-нибудь знает, как заставить эту штуку работать.

18
задан Curt 3 November 2011 в 16:18
поделиться