Мне нужно сохранить текст всех хранимых процедур в базе данных в типе данных XML. Когда я использую FOR XML PATH
, текст внутри хранимой процедуры содержит сериализованные символы данных, такие как 
и 

для CRLF и "
и т. д. Мне нужно, чтобы текст сохранялся в структуре xml без этих символов, потому что текст нужно будет использовать для воссоздать хранимую процедуру.
Это запрос, который я использую для FOR XML PATH
:
SELECT
[View].name AS "@VName", [Module].definition AS "@VDefinition"
FROM
sys.views AS [View]
INNER JOIN
sys.sql_modules AS [Module] ON [Module].object_id = [View].object_id
FOR XML PATH ('View'), TYPE
Я читал, что я должен использовать CDATA
для текста, используя FOR XML EXPLICIT
. Однако вывод, когда я запускаю следующий запрос и просматриваю данные XML, также содержит эти символы. Мне нужно, чтобы текст был в виде простого текста без этих символов.
Это мой запрос:
SELECT
1 AS Tag,
0 AS Parent,
NULL AS [Database1!1],
NULL AS [StoredProcedure!2!VName],
NULL AS [StoredProcedure!2!cdata]
UNION ALL
SELECT
2 AS Tag,
1 AS Parent,
NULL,
[StoredProcedure].name as [StoredProcedure!2!!CDATA],
[Module].definition as [StoredProcedure!2!!CDATA]
FROM
sys.procedures AS [StoredProcedure]
INNER JOIN
sys.sql_modules [Module] ON [StoredProcedure].object_id = [Module].object_id
WHERE
[StoredProcedure].name NOT LIKE '%diagram%'
FOR XML EXPLICIT
Как я могу сохранить текст хранимых процедур в виде обычного текста? Или когда я анализирую тип данных xml для воссоздания хранимой процедуры, могу ли я десериализовать ее, чтобы в ней не было этих символов?
В идеале я хотел бы использовать FOR XML PATH
, но если это невозможно, я буду использовать FOR XML EXPLICIT
.