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